gpt4 book ai didi

php - php 中的 get_result() 和 store_result() 有什么区别?

转载 作者:可可西里 更新时间:2023-11-01 12:52:10 25 4
gpt4 key购买 nike

这是我的代码。我正在检查用户是否存在于登录/注册系统中:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com