PHP,MySQL语句导致零行


PHP, MySQL statement results in ZERO rows

希望有人能帮助我。

我在 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 行。

奇怪的是,非准备版本有效:

$query = 'SELECT * FROM companies WHERE user_name="'.$user_name.'"'; 
$result = $mysqli->query($query);
$count= $result->num_rows;
echo "Aantal: ".$count;

所以我的问题是,有谁知道为什么准备好的版本返回零而非准备版本返回正确的行数?

将此行添加到 execute 和 num_rows 语句之间的代码中。

$stmt->store_result();

您必须在计数之前存储它。

对于 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;

可能需要绑定结果:

/* bind result variables */ $stmt->bind_result($district);

完整示例在这里