这取决于您计划如何读取结果集。但是在您给出的实际示例中,您对读取任何返回的数据不感兴趣。您唯一感兴趣的是是否有记录。
在这种情况下,您的代码很好,但它与get_result一起工作同样好。
例如,当您想要获取具有给定电子邮件的用户的用户ID时,差异变得更加明显:
SELECT id FROM users WHERE email = ?
如果您打算用 读出该 id,那么您将坚持使用 ,并用于定义要获取此 id 的变量,如下所示:$stmt->fetch
store_result
bind_result
$stmt->store_result();
$stmt->bind_result($userid); // number of arguments must match columns in SELECT
if($stmt->num_rows > 0) {
while ($stmt->fetch()) {
echo $userid;
}
}
如果您希望获取可以调用的结果对象或任何fetch_* 变体方法,则需要使用 ,如下所示:fetch_assoc()
get_result
$result = $stmt->get_result(); // You get a result object now
if($result->num_rows > 0) { // Note: change to $result->...!
while ($data = $result->fetch_assoc()) {
echo $data['id'];
}
}
请注意,您可以从 中获取结果对象,而 与 不同。您现在应该从该结果对象中获取。get_result
store_result
num_rows
两种方式都有效,这实际上是个人喜好的问题。