Создание пользователя MySQL с подготовленными утверждениями? - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь создать пользователя 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 голосов
/ 29 июня 2018

Кажется, это проблема безопасности. Как создать нового пользователя базы данных MySQL с помощью подготовленных операторов MySQLi? Ваш лучший вариант:

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

Помните, что мы упускаем из виду все вопросы санитарии и безопасности. Не размещайте этот код на внешнем интерфейсе (только в открытом доступе), только на защищенном бэк-офисе (Admin).

0 голосов
/ 29 июня 2018

Проблема заключается в:

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

The подготовить() Метод может вернуть false, и вы должны проверить это.

Кроме того, рассмотрите возможность использования чего-то вроде $ conn-> error_list для проверки ошибок, возникших при разборе SQL. (Я буду время от времени выводить фактические строки оператора SQL и вставлять в phpMyAdmin для проверки, но там определенно что-то не получается.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...