bind_result() 不绑定变量


bind_result() not binding variables

以下代码产生错误:Notice: Undefined variable: morrisons .

我完全不知道为什么会发生此错误,这似乎是实际分配变量的问题,因为它只是没有被分配。

$sql = "SELECT name
        FROM stds
        INNER JOIN `users`
        ON users.`id` = stds.`id`
        WHERE users.`username` = ?";
if ($stmt = $db->prepare($sql)) {
    $stmt->bind_param("s", $_POST['username']);
    $stmt->execute();
    $stmt->bind_result($morrisons);
    $stmt->fetch();
    $stmt->close();
}
echo $morrisons;
    $stmt->bind_result($morrisons);

此行仅在以下情况下执行

if ($stmt = $db->prepare($sql)) {

产生true结果。否则,整个块将被跳过,$morrisons永远不会被声明。所以这条线

echo $morrisons;

将产生错误。因此,根本原因是$db->prepare返回false,这意味着查询以某种方式错误或数据库连接已消失。在这种情况下检查错误。