我正在尝试为用户创建一个MySQL用户,该用户具有针对ex的准备好的语句。
$QueryToCreateUser = $conn->prepare("CREATE USER '?'@'localhost' IDENTIFIED BY ? ;");
$QueryToCreateUser->bind_param('ss',$CreateUser,$CreatePassword);
$QueryToCreateUser->execute();
尽管这样做,我会收到一条错误消息
Fatal error: Uncaught Error: Call to a member function bind_param() on boolean...
是否可以使用准备好的语句并创建MySQL用户?
答案 0 :(得分:0)
问题出在:
job.done()
准备() 方法可以返回false,您应该检查一下。
此外,考虑使用类似$ conn-> error_list之类的内容来检查解析SQL时发生的错误。 (我偶尔也会回显实际的SQL语句字符串,并粘贴到phpMyAdmin中进行测试,但是肯定有一些失败的地方。)
答案 1 :(得分:0)
似乎是一个安全问题。 How to create new MySQL database user with MySQLi prepared statements? 最好的选择是:
if (!($QueryToCreateUser = $conn->query("CREATE USER '$CreateUser'@'localhost' IDENTIFIED BY $CreatePassword ;"))) {
echo "User insertion failed: (" . $conn->errno . ") " . $conn->error;
}
请注意,我们忽略了所有字符串卫生和安全性问题。 请勿将此代码放在前端(在野外),而只能放在安全的后台(管理员)上。