У меня есть сценарий с использованием PHP и MySQLi с подготовленными операторами. Цель состоит в том, чтобы создать нового пользователя на сервере MySQL, однако подготовка заявления не выполняется, и никакой дополнительной информации о том, почему.
$query = 'CREATE USER ?@`10.1.1.%` IDENTIFIED BY ?;'; if ($stmt = $newdb->prepare($query)) { $stmt->bind_param('ss', $db_username, $db_password); if ($stmt->execute()) { // Database user created successfully } else { die(errorJSON('db', 'create', 22)); } $stmt->close(); } else { die(errorJSON('db', 'create', 3)); }
Любые идеи, почему это утверждение не справляется?
Спасибо.
Вы должны печатать $stmt->error
(и необязательно $stmt->errno
) при проверке успеха / сбоя ваших запросов. Например:
if ($stmt->execute()) { // Database user created successfully } else { errorJSON('db', 'create', 22) die($stmt->error); }
Вышеприведенный пример – неплохой пример – скорее всего, я испортил логику вашей отчетности об ошибках, но именно так вы получите ошибку и распечатаете / запишите ее.