我正在用 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 在这段时间里,我更改了很多代码,我尝试使用函数、对象、重定向来使用不同的实现,但它们似乎都不起作用。
事情总是一样的:
- 它创建数据库
- 尝试添加用户时返回错误代码
- 如果我刷新页面,它会正确添加用户