php - mysqli get_result 和 bind_result 之间的性能或安全差异?

标签 php prepared-statement

php 开发人员创建函数 bind_result 的意义何在,因为 get_result 似乎也能正常工作。

if($stmt=$mysqli->prepare("SELECT member_ID FROM members where hair=? and hand=?")){
    if($stmt->bind_param('ss',$hair,$hand)){
        if($stmt->execute){
            $result=$stmt->get_result();
            while($line=$result->fetch_assoc()){
                echo $line['member_ID'];
            }
            // ------------ versus -------------------
            // $stmt->store_result();
            // $stmt->bind_result($member_ID);
            // while($stmt->fetch()){
            //  echo $member_ID;
            // }
        }
    }
}

似乎(我猜)php 开发人员自己更喜欢 $stmt->fetch() 因为这个函数出现得更早,但为什么 $stmt->fetch()?这似乎不是 $row['member_ID']$member_ID 之间变量名不同的原因。

最佳答案

一些程序员喜欢将关联数组的每个元素分配给一个常规变量,这样他们就可以不那么冗长地使用它们。使用 bind_result 会自动为您完成此操作,您不必每次都在获取循环中重复它。

这基本上只是一种风格选择。恕我直言,bind_result 的主要问题是您必须确保参数的顺序与 select 列表保持同步。 bind_param 也是如此(这就是为什么 PDO 允许 :name 参数来解决这个问题),但好处多于它。

关于php - mysqli get_result 和 bind_result 之间的性能或安全差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18283960/

相关文章:

php - Bootstrap 面板未扩展

sql - 在 Postgresql 中以间隔添加日期作为参数的准备语句

mysql - Like 带有预准备语句的查询

php - strip_tags 足以从字符串中删除 HTML 吗?

php - Node JS 读入缓冲数据

php - NetBeans:代码折叠没有出现在我的 PHP 文件之一上

php - 上传wordpress主题时获取 "PHP Warning: is_readable(): open_basedir restriction in effect."

java - 我必须在交易中放置准备好的语句的地方

java - PreparedStatement 没有为参数一指定值

php - 准备好的语句未获取所有结果