我在PHP中有一个非常简单的SELECT语句:
$query_select = ("SELECT * FROM companies where user_name = ? ");
$stmt = $mysqli->prepare($query_select);
$stmt->bind_param("s", $user_name);
$stmt->execute();
$count = $stmt->num_rows;
在companies
表中的我有几行,其中$ user_name正在尝试查询。但是我仍然得到0行。
奇怪的是,非PREPARED版本有效:
$query = 'SELECT * FROM companies WHERE user_name="'.$user_name.'"';
$result = $mysqli->query($query);
$count= $result->num_rows;
echo "Aantal: ".$count;
所以我的问题是,有没有人知道为什么准备好的版本返回ZERO而非准备版本返回正确的行数?
答案 0 :(得分:2)
将此行添加到execute和num_rows语句之间的代码中。
$stmt->store_result();
你必须在计算之前存储它。
答案 1 :(得分:0)
对于mysqli预处理语句,您必须采取额外步骤:存储结果。
试试这个:
$query_select = ("SELECT * FROM companies where user_name = ? ");
$stmt = $mysqli->prepare($query_select);
$stmt->bind_param("s", $user_name);
$stmt->execute();
$stmt->store_result(); // <-- new line
$count = $stmt->num_rows;
答案 2 :(得分:0)