PHP implode()报错:Argument #2需为数组传入mysqli对象修复
PHP购物车订单提交页implode()致命错误修复
错误原因
抛出的TypeError明确指向implode()参数类型不匹配:函数第二个参数要求传入数组,实际拿到的是mysqli数据库连接对象。
问题出在你代码第150行的implode()调用参数顺序完全写反:
- 你当前运行的代码写的是
$update_string = implode($updates,$cxn); - PHP中
implode()的标准签名是implode(string $分隔符, array $待拼接数组),第一个参数传拼接用的分隔字符串,第二个参数才是要处理的数组 - 你把数组
$updates放在了第一个参数位,把mysqli连接对象$cxn放在了第二个参数位,自然触发类型错误。你之前尝试替换分隔符内容但没调整参数顺序,所以错误一直存在。
修复步骤
- 定位到文件第150行,把错误的implode调用替换为参数顺序正确的写法:
// 修正后的代码 $update_string = implode(",", $updates);
- 额外兼容性修复(必做,否则后续运行会报函数不存在错误):
你代码中处理信用卡号的部分使用了PHP7及以上版本已完全移除的ereg_replace函数,替换为兼容的preg_replace即可:
// 注释掉原有两行废弃写法 // $value = ereg_replace(' ','',$value); // $value = ereg_replace('-','',$value); // 替换为以下写法 $value = preg_replace('/\s+/','',$value); $value = preg_replace('/-/','',$value);
修改完成后重新提交订单,程序会正确拼接SQL更新语句,执行完成后正常展示订单汇总页面。
内容的提问来源于stack exchange,提问作者Clay Korth
相关产品推荐
相关产品推荐

