【问题标题】:Adding single quote into mysql results with \'s sometimes but not always在 mysql 结果中添加单引号,有时但并非总是使用 \'s
【发布时间】:2014-02-21 06:26:43
【问题描述】:

最初,当我尝试添加具有单引号的字符串时,数据库用于返回错误消息..

所以我在查询之前向该字符串添加了 addslashes

添加斜杠后,字符串在数据库中看起来像这样。 出于某种原因,并不总是插入反斜杠。

请在经历过这种情况后建议我一种处理报价的方法

案例 1:使用加斜杠

我已经有一个巨大的代码,如果我在插入之前使用 addslashes,我还必须在选择查询之后使用 stripslashes 来删除每个结果中的 \。这将导致我在 Codeigniter 中的控制器和模型发生很多变化。

案例 2:没有添加斜杠

如果我不使用 addlashes 或 mysql_escape,我的数据库不允许我存储单引号。

我将字符集更改为 utf8mb4_general_ci,但仍然没有用.. 我还确保 config.php 中的字符集也包含 utf8mb4 字符集

对有效方法有什么建议吗?

【问题讨论】:

  • 如果您激活记录,codeigniter 是否会自行添加斜杠?使用活动记录可以吗?
  • Prepared Statement 默认处理,如果单引号、反斜杠等任何字符作为数据的一部分存在。你甚至不需要在数据上调用mysql_real_escape_string
  • 你可以试试 $this->db->e​​scape(),$this->db->e​​scape_str(), $this->db->e​​scape_like_str()
  • 我正在使用活动记录,但问题仍然存在。我需要更改任何配置吗?

标签: php mysql codeigniter stripslashes addslashes


【解决方案1】:

我找到了解决方案,希望这对其他人有帮助

将 MySql 更新到 5.5.3+ 并使用字符集 utf8mb4_general_ci.. 确保 数据类型是长文本

就是这样。据我所知,不需要使用addlashes 和stripslashes。

它还支持表情符号 谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 2017-12-07
    相关资源
    最近更新 更多