bind_result()不绑定变量

时间:2013-11-15 11:49:46

标签: php mysql sql

以下代码产生错误: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;

1 个答案:

答案 0 :(得分:1)

    $stmt->bind_result($morrisons);

此行仅在此行

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

产生true结果。否则,将跳过整个块,并且永远不会声明$morrisons。所以这一行

echo $morrisons;

会产生错误。因此根本原因是$db->prepare返回false,这意味着查询在某种程度上是错误的,或者数据库连接已经消失。在这种情况下检查错误。