以下代码产生错误: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
,这意味着查询以某种方式错误或数据库连接已消失。在这种情况下检查错误。