3

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

4

2 回答 2

2

一些程序员喜欢将关联数组的每个元素分配给一个常规变量,这样他们就可以不那么冗长地使用它们。Usingbind_result会自动为您执行此操作,并且您不必每次通过 fetch 循环都重复它。

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

于 2013-08-17T00:42:52.880 回答
0

从数据库返回字符串没有安全风险(根据您返回的内容进行正确的验证),

get_result()更容易从语句中返回预先创建的数组,

bind_result()可以轻松使用您希望使用的值。

从本质上讲,这完全取决于开发人员喜欢使用什么。变量或求数组。它们都执行相同的任务,只是使用 bind_result 带走了一行代码来获取数组类型。

于 2013-08-17T00:42:21.467 回答