使用MySQLi准备语句创建用户

时间:2011-08-31 13:59:18

标签: php mysqli prepared-statement

我有一个使用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));
}

任何有关为什么会发表这种说法的想法都会失败?

谢谢。

1 个答案:

答案 0 :(得分:1)

在测试查询成功/失败时,您应该打印$stmt->error(以及可选$stmt->errno)。例如:

if ($stmt->execute()) {
        // Database user created successfully
    } else {
        errorJSON('db', 'create', 22)
        die($stmt->error);
    }

以上是一个非常糟糕的例子 - 可能我搞砸了错误报告本身的逻辑 - 但这就是你如何检索错误并打印/记录它。