不能在准备好的mysql查询中使用MAX()

时间:2017-08-01 15:53:54

标签: php mysql prepared-statement

我正在使用最新版本的PHP 5和MySQL。

查询如下:

$sql = "SELECT max(num) 
    FROM list
    WHERE value = ?";

如果我手动用值$my_value替换值,我从phpMyAdmin执行查询,我获得了正确的结果。

相反,如果我以这种方式准备查询,我就无法获得任何东西:

$stmt = $con->prepare($sql);
$stmt->bind_param("s", $my_value);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($num);
$stmt->close();
echo "Num: [" . $num . "]";

输出为:Num: []

1 个答案:

答案 0 :(得分:2)

bind_result()不会删除调用fetch()命令的必要性。您的代码应该类似于:

$stmt = $con->prepare($sql);
$stmt->bind_param("s", $my_value);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($num);
$stmt->fetch();
$stmt->close();
echo "Num: [" . $num . "]";

有关详细信息,请参阅docs