这是我的代码。我正在检查用户是否存在于登录/注册系统中:
public function userExist($email){
$stmt = $this->conn->prepare("select email from users where email= ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows>0){
}
else{
}
}
我可以使用 get_result 而不是 store_result() 吗?
最佳答案
这取决于你打算如何读取结果集。但是在您给出的实际示例中,您对读取任何返回的数据不感兴趣。您唯一感兴趣的是是否有记录。
在那种情况下,您的代码没有问题,但它与 get_result 的效果同样好。
当您想获取具有给定电子邮件的用户的 userid 时,差异变得更加明显:
SELECT id FROM users WHERE email = ?
如果你打算用 $stmt->fetch
读出那个 id,那么你会坚持
store_result
,并会使用 bind_result
来定义您希望在哪个变量中获取此 id,如下所示:
$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_assoc()
或任何 fetch_* 变体方法的结果对象,那么您需要使用 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
。
这两种方式都有效,这真的是个人喜好的问题。
关于php - php 中的 get_result() 和 store_result() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35116807/