我有一个使用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));
}
任何有关为什么会发表这种说法的想法都会失败?
谢谢。
答案 0 :(得分:1)
在测试查询成功/失败时,您应该打印$stmt->error
(以及可选$stmt->errno
)。例如:
if ($stmt->execute()) {
// Database user created successfully
} else {
errorJSON('db', 'create', 22)
die($stmt->error);
}
以上是一个非常糟糕的例子 - 可能我搞砸了错误报告本身的逻辑 - 但这就是你如何检索错误并打印/记录它。