mysqli_stmt :: bind_result():绑定变量的数量与预编译语句中的字段数不匹配

时间:2016-10-31 11:36:28

标签: php

我正在使用一个准备好的语句我已经在bind_param中传递了与我期望的完全相同数量的变量,但它仍然给我一个变量计数的错误并不匹配。这里的代码< / p>

$query="select `shipping_name`,`shipping_address1`,`shipping_address12`,`shipping_city`,`shipping_state`,`shipping_postalcode`,`billing_name`,`billing_address2`,`billing_address22`,`billing_city`,`billing_state`,`billing_postalcode` from puppy_shipping where unique_id=?";
                                $stmt = $db->prepare($query);
                                $bind='ssssssssssss';
                                if($stmt){
                                $stmt->bind_param('s',$id);
                                $stmt->execute();
                                $stmt->bind_result($bind,$shipping_name,$shipping_address1,$shipping_address12,$shipping_city,$shipping_state,$shipping_postalcode,$billing_name,$billing_address2,$billing_address22,$billing_city,$billing_state,$billing_postalcode);
                                while ($stmt->fetch()) 
                                {
    }
                        $stmt->close();
                    }

2 个答案:

答案 0 :(得分:2)

你的问题在于这一行

$stmt->bind_result($bind, $shipping_name,$shipping_address1,$shipping_address12, ....);

你试图绑定变量类型,就像使用bind_param()一样,这是错误的 - 因为这个函数没有这样的参数。 bind_result()唯一的参数是您从查询中选择的值,没有别的。

解决方案是从$bind来电中删除bind_result(),将其设为

$stmt->bind_result($shipping_name, $shipping_address1, $shipping_address12, ....);

参考

答案 1 :(得分:0)

面向对象的样式

$stmt->bind_result($name, $code);

程序样式

mysqli_stmt_bind_result($stmt, $name, $code);