【问题标题】:CodeIgniter adds new line characters in my queryCodeIgniter 在我的查询中添加换行符
【发布时间】: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


【解决方案1】:

可能是您的代码编辑器生成换行符吗?

无论如何,避免该问题的一种快速方法是使用 codeigniter 查询方法:

$userModel->query("UPDATE `users` SET `reputations` = reputations + 10 WHERE `user_id` = $user_id)

不是最干净的解决方案,但它可以确保它有效! :)

马蒂亚

【讨论】:

  • 是的,它肯定会起作用,我后来发现了增加列的最佳方法,即$model->increment('column', value)->update()。但是我还是不明白为什么 Codeigniter 必须给出我之前发布的错误
猜你喜欢
  • 2011-08-09
  • 2011-01-20
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
相关资源
最近更新 更多