Warning: mysqli_stmt::bind_param(): Number of elements in type definition string doesn‘t match numbe

        这篇文章呐,是针对PHP7.0版本以上的对mysqli 的 prepare函数,来绑定定参数的,希望文章能够帮助大家,这个问题也是我在写脚本中遇到的。        

        这个问题主要是perpare函数在执行过程中,在执行bind_param函数中出现的问题。

 代码如下:


            $ftype = $proObj->getType();
            $plan = $proObj->getPlan();
            $fID = $proObj->getfId();
            $sql = "UPDATE obj SET  ftype=?,plan=?,built_up=? WHERE fID =? ";
            $stmt = $this ->mysqli ->prepare($sql);
            $stmt ->bind_param('sds',$fname,$ftype,$plan,$built_up,$ftarget,$fID); 
            $stmt ->execute();

        因为在bind_param 函数必须传入参数,来绑定传入的值,可能是大家不熟悉bind_param 函数的用法。下面我就介绍一下bind_param 函数用法。

语法如下:

bind_param('参数的数据类型',参数变量),bind_param('sss',lastname,$name)

        前面的参数有四种类型:

i - integer(整型)

d - double(双精度浮点型)

s - string(字符串)

b - BLOB(布尔值)

所以我们的一个问题就可以的解决了  ,就是要参数的数据类型的量要等于后面的变量或参数的量。

         直白一点说的话就是 1 框的字符串的字母数和要等于后面的一个变量数和。这里的字符串字母只能是上面说的四种类型。

使用mysqli_stmt类处理SELECT查询结果需要经过以下几个步骤: 1. 准备预处理语句:使用mysqli_prepare()函数准备预处理语句。 2. 绑定参数(如果有):如果预处理语句中有占位符,需要使用mysqli_stmt_bind_param()函数将参数绑定到占位符上。 3. 执行预处理语句:使用mysqli_stmt_execute()函数执行预处理语句。 4. 获取结果集:使用mysqli_stmt_get_result()函数获取结果集。 5. 遍历结果集:使用mysqli_fetch_array()、mysqli_fetch_assoc()等函数遍历结果集,获取每一行数据。 下面是一个示例代码: ``` // 连接数据库 $mysqli = new mysqli("localhost", "user", "password", "database"); // 准备预处理语句 $stmt = mysqli_prepare($mysqli, "SELECT * FROM users WHERE id > ?"); // 绑定参数 $id = 2; mysqli_stmt_bind_param($stmt, "i", $id); // 执行预处理语句 mysqli_stmt_execute($stmt); // 获取结果集 $result = mysqli_stmt_get_result($stmt); // 遍历结果集 while ($row = mysqli_fetch_assoc($result)) { echo "id: " . $row["id"] . ", name: " . $row["name"] . "<br>"; } // 关闭预处理语句和数据库连接 mysqli_stmt_close($stmt); mysqli_close($mysqli); ``` 在该示例中,我们使用mysqli_prepare()函数准备了一条预处理语句,该语句查询了id大于2的用户信息。接着,我们使用mysqli_stmt_bind_param()函数将参数2绑定到了占位符上。然后,使用mysqli_stmt_execute()函数执行了预处理语句,并使用mysqli_stmt_get_result()函数获取了结果集。最后,我们使用mysqli_fetch_assoc()函数遍历了结果集,将每一行数据输出到了页面上。最后,我们关闭了预处理语句和数据库连接。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值