php pdo 中 字段+1的问题 ?

发布于 2022-09-04 00:34:18 字数 455 浏览 8 评论 0

以下是代码

$this->sth = $this->pdo->prepare($sql);
$this->sth->execute(array_values(array_merge($vals, $wheres)));
return $this->sth->rowCount();

prepare的sql语句

update fb_articles set view_num = ? where id = ?

execute的数组

array(2) { [0]=> string(12) "view_num + 1" [1]=> string(2) "19" }

return 是0
如果将sql语句直接拼接执行是可以的,那么在pdo中要怎么使用呢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

箜明 2022-09-11 00:34:18

把sql改了下:update fb_articles set view_num = view_num + 1 where id = ?
然后参数是array($id)。

最丧也最甜 2022-09-11 00:34:18

手机码的,可能格式不太好,有权限的麻烦帮我拍下版,谢谢

PDO的预处理语句是分两次(需要配置参数,另一种方式是PHP模拟转义)发送到数据库的,第一条数据是传输语义(所以可以防SQL注入),MySQL接收并分析,你的预处理语句是 update xxx set xxx = xxx, MySQL分析后当成简单的赋值语句了,所以你传输的参数转义成了字符串,而你的字段类型是int, 所以直接转换为0了,可以把预处理语句设置为: update xxx set xxx = xxx + ?.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文