我正在用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)检查过,我可以说数据库和表都存在。
这是我创建数据库的部分:[这很好用]
$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函数而不是mines)。
提前致谢并抱歉这个长期问题! : - )
编辑1 在这几天我改变了很多代码,我尝试使用函数,对象和重定向来实现不同的实现,但它们似乎都没有用。
事情总是一样的: