1

我正在用 php 编写安装脚本,该脚本必须询问用户一些数据,然后将它们存储在 XML 文件和数据库中。

这是程序:

1)插入数据;

2) 将配置数据(如数据库名称、用户、密码、主机、端口)保存在 XML 文件中

3)使用这些数据安装数据库(我有一个空转储用于创建它)

4) 在“admin”表中插入第一个用户数据(取自第 1 点的表格)

现在,在第 4 点之前一切正常。当我尝试访问数据库时,MySql 总是返回一个错误 #1146,表示该表不存在。

这是我的自定义 JSON 日志:

{
 "Status":"KO",
 "Reason":"SELECT * FROM bbscp_admin_user; || Table 'adb.bbscp_admin_user' doesn't exist",
 "Errno":1146
}

显然,我使用 phpMyAdmin 和 mysql(来自 cli)检查了两者,我可以说 DB 和 Table DO 都存在。

这是我创建数据库的部分:[这很好用]

$Install = Install::getInstance();
$sqlscript = str_replace("__DBNAME__", 
                         $config_info['dbname'], 
                         file_get_contents('../config/bbscp-base-db.sql')
                        );

$connection = mysqli_connect($config_info['dbhost'],
                             $config_info['dbuser'],
                             $config_info['dbpwd']
                             ) or die("Unable to connect! Error: ".mysql_error());  

if(mysqli_query($connection,'CREATE DATABASE '.$config_info['dbname'].';')){
    echo 'Database successfully createad';
    mysqli_close($connection);  
}else{
    die('ERROR CREATING DATABASE!');
}

这是我从转储中填充数据库的部分(它只添加表)

$connection = mysqli_connect($config_info['dbhost'],
                             $config_info['dbuser'],
                             $config_info['dbpwd'],
                             $config_info['dbname']
                            ) or die("Unable to connect! Error: ".mysql_error());

if(mysqli_multi_query($connection, $sqlscript)){
    echo 'Database successfully imported';
    mysqli_close($connection);  
}else{
    die('ERROR IMPORTING DATABASE');
}

现在决定性的部分,我打开一个与数据库的连接(使用我在过去几年开发并且一直运行良好的库)

$DB = new Database(Install::getInstance());
$Q = new Query();

$DB->connect();
$query = $Q->addNewUser($config_info['nickname'],
                        $config_info['password'],
                        $config_info['firstname'],
                        $config_info['lastname'],
                        $config_info['email'],
                        0);  // this just returns the query string I need
       // the query in this case is:
       //   INSERT INTO bbscp_admin_user               
       //            (nickname,password,firstname,lastname,mail,confirmed)
       //          VALUES (the ones above);"



    $res=$DB->startQuery($query); // THIS IS WHERE THE ERROR IS RETURNED
           // this function only wraps the mysqli_query and returns a custom JSON

我尝试了很多解决方案.. 表确实存在,但此时我尝试调用的每个查询都不起作用,因为显然“表不存在”(即使使用 mysqli 函数而不是地雷)。

在此先感谢,很抱歉这个问题很长!:-)

编辑 1 在这段时间里,我更改了很多代码,我尝试使用函数、对象、重定向来使用不同的实现,但它们似乎都不起作用。

事情总是一样的:

  • 它创建数据库
  • 尝试添加用户时返回错误代码
  • 如果我刷新页面,它会正确添加用户
4

0 回答 0