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

标签 php mysqli

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

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/

相关文章:

php - 如何杀死一个网络进程

php - Ajax 检索错误无法正常工作 Laravel

javascript - 使用 JSON 从 PHP 查询获取数据不起作用

php - 将变量上传到sql查询

php - HTML & PHP MySQL,从文本区域插入许多数据到表中

php - 在 WordPress 中禁用所有样式、脚本和元标记的最佳方法

php - 如何在 ubuntu 12.04 + 虚拟主机 + mod_rewrite 中安装 ZF2

javascript - 在同一页面上提交表单和成功消息?

php - 在非对象上调用成员函数 fetch_assoc()

PHP - 从一个字段中提取逗号爆炸的列表