用准备好的语句创建mysql用户?

20jt8wwn  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(347)

我试图创建一个用户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用户?

jexiocij

jexiocij1#

似乎是个安全问题。如何用mysqli编写的语句创建新的mysql数据库用户?您的最佳选择是:

if (!($QueryToCreateUser = $conn->query("CREATE USER  '$CreateUser'@'localhost' IDENTIFIED BY $CreatePassword ;"))) {
    echo "User insertion failed: (" . $conn->errno . ") " . $conn->error;
}

请注意,我们忽略了所有的卫生和安全问题。不要把这个代码放在前端(在野外),只有在一个安全的后台(管理员)。

nbnkbykc

nbnkbykc2#

问题在于:

$QueryToCreateUser = $conn->prepare("CREATE USER  '?'@'localhost' IDENTIFIED BY ? ;");
 $QueryToCreateUser->bind_param('ss',$CreateUser,$CreatePassword);

prepare()方法可以返回false,您应该对此进行检查。
另外,考虑使用类似$conn->error\u list的方法来检查解析sql时发生的错误(我偶尔会回显实际的sql语句字符串,并粘贴到phpmyadmin中进行测试,但肯定有什么地方失败了。)

相关问题