使用准备好的语句创建MySQL用户?

时间:2018-06-29 06:29:51

标签: php mysql prepared-statement

我正在尝试为用户创建一个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用户?

2 个答案:

答案 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;
}

请注意,我们忽略了所有字符串卫生和安全性问题。 请勿将此代码放在前端(在野外),而只能放在安全的后台(管理员)上。