php中嵌入的sql语句长度问题

这个问题花费了我长达18小时,从昨天中午开始到现在,折腾的我茶饭不思。

问题是这样的,php编写的API接收到来自前端的N个数据,然后通过sql插入到数据库中,我本来是这样写的。

$stmt = $this->conn->prepare("INSERT INTO mocaresult(userID, upload,  checkdate, matchtest, copydraw, clockoutline, clocknum, clockpoint, name1, name2, 
name3, reciteinorder, recitereverse, knock1, minus7first, minus7second, minus7third, minus7forth, minus7fifth) VALUES(?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?)");
$stmt->bind_param("ssssssss", $userID, $upload, $checkdate, $matchtest, $copydraw, $clockoutline, $clocknum, $clockpoint, $name1, $name2, $name3,
 $reciteinorder, $recitereverse, $knock1, $minus7first, $minus7second, $minus7third, $minus7forth, $minus7fifth);
$result = $stmt->execute();
$stmt->close();
但是不行,数据库中并没有插入进去,我花了5个小时排查前端的问题,没有任何问题,搞得我怀疑人生了。之后我直接把高中的控制变量法用到极致了, 和与这个功能几乎一致的一个功能进行对比,发现前端没有丝毫问题,同样的前端我把数据写进另一个api中就没有任何问题,终于把前端的问题排除了。

过了很久,我把php中的sql字段删除到8个(不要问我为什么是8个,我快疯了一个一个减少的),发现insert into 表名 (8个字段)values (8个?),这样是可以插入的,9个就不行。

WTF?EXO me?

我从网上搜了好久,也翻墙出去搜,压根没人遇到我这种问题。

我最后换了种写法。

$stmt = $this->conn->prepare("INSERT INTO mocaresult(userID, upload,  checkdate, matchtest, copydraw, clockoutline, clocknum, clockpoint, 
name1, name2, name3, reciteinorder, recitereverse, knock1, minus7first, minus7second, minus7third, minus7forth, minus7fifth) 
VALUES('".$userID."', '".$upload."', '".$checkdate."', '".$matchtest."', '".$copydraw."', '".$clockoutline."', '".$clocknum."', 
'".$clockpoint."', '".$name1."', '".$name2."', '".$name3."', '".$reciteinorder."', '".$recitereverse."', '".$knock1."', 
'".$minus7first."', '".$minus7second."', '".$minus7third."', '".$minus7forth."', '".$minus7fifth."')");
哦,终于可以了。我至今搞不懂为什么用?然后绑定变量这种方式,长度不能超过8,是我电脑的问题吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值