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
table 我有几行 $user_name 我正在尝试查询。但结果我仍然得到 0 行。
奇怪的是非 PREPARED 版本有效:
$query = 'SELECT * FROM companies WHERE user_name="'.$user_name.'"';
$result = $mysqli->query($query);
$count= $result->num_rows;
echo "Aantal: ".$count;
所以我的问题是,有谁知道为什么准备版本 returns 零和非准备版本 returns 正确的行数?
将此行添加到执行和 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);
完整示例here
希望有人能帮助我。
我在 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
table 我有几行 $user_name 我正在尝试查询。但结果我仍然得到 0 行。
奇怪的是非 PREPARED 版本有效:
$query = 'SELECT * FROM companies WHERE user_name="'.$user_name.'"';
$result = $mysqli->query($query);
$count= $result->num_rows;
echo "Aantal: ".$count;
所以我的问题是,有谁知道为什么准备版本 returns 零和非准备版本 returns 正确的行数?
将此行添加到执行和 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);
完整示例here