【发布时间】:2020-10-05 16:22:11
【问题描述】:
我想更新我的数据库表中的一列,更新应该只是在现有的列中添加一个数值。 但是这一次,我使用 CodeIgniter Query builder 编写查询,问题是当我运行脚本时,CodeIgniter 会抛出 Sql Exception强>下面:
"message": "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '11:01:37\nWHERE `user_id` = '26'' at line 1"
如您所见,它在查询字符串中添加了一个换行符。
下面的PHP代码是CodeIgniter
中的查询$userModel->set('reputations', 'reputations+10', false)
->where('user_id', $user_id)
->update();
我注意到的一件事是,如果我删除了告诉 CodeIgniter 不要转义列名的false(第三个参数),则不会出现任何错误,而是“0”将在reputation 专栏更新。
我不知道问题可能是什么,我可以通过编写自定义查询继续前进,但是,我想确保我没有做错什么。
P.S:自定义的看起来像这样:
UPDATE users
SET reputations = reputations + 10 WHERE user_id = $user_id
注意:在上面的错误消息中,您可能想知道错误中的数字来自哪里,即
'11:01:37 在'11:01:37\nWHERE user_id
它是我的表中列的值,它也在reputation 列旁边更新。
谢谢朋友。
【问题讨论】:
-
您需要检查
11:01:37来自的行,因为您说它在声誉列旁边更新,因为\n在该值之后,而不是在声誉之后。 -
这就是问题所在,我已经扫描了一遍,没有发现任何错误。
-
您能否说明您是如何将
11:01:37传递到数据库中的,或者它是从哪里来的?这可能不是一个明显的错误,但它来自使用该值更新该特定字段的任何内容。 -
它实际上是由 codeIgniter 自动更新的,每次更新一行时它都会更新。在我遇到这个最近的错误之前,它对我所有的杂物都很好
标签: php mysql codeigniter