0

我正在使用codeigniter,我所做的基本上是:

$val = $this->db->call_function('real_escape_string', $this->input->post('name'));

这就是我在放入数据库之前对数据所做的一切。当有人像 O'hara 这样输入值时,在数据库中它会像 O\'hara

所以,我想我可以在输出上加上斜杠,但这是在数据库中转义和存储数据的常用方法吗?

已解决 Active Records 转义查询,所以我使用 'real_escape_string' 函数进行双重转义

所以我想我根本不需要使用 real_escape_string,活动记录就是这样做的

4

4 回答 4

1

'\' 称为转义字符,必须使用它之后的下一个字符(在您的情况下为 ')不会干扰 SQL 语句。但是,如果您使用 CI,它应该会为您处理所有这些。我相信您可以使用“HTML 助手”来格式化或删除输出文本上的斜线。即使那样,但我可能是错的,当从 CI 中的数据库输出值时,斜杠将自动被剥离。

于 2012-07-07T00:08:24.947 回答
0

转义引号和特殊字符是记录存储的常规做法和预期,因为它有助于确保您的代码可以准确存储和提取。

于 2012-07-07T00:05:49.977 回答
0

转义 SQL 查询的字符串以便您可以将实际值输入数据库。

SQL 查询中的值看起来像O\'hara,但最终在数据库中的值是O'hara.

因此,当您显示该值时,您根本不需要做任何事情。当然,除了为您显示它的环境转义它。如果它显示在 HTML 文档中,您将对其进行 HTML 编码。这不会更改撇号 ( '),但会更改其他字符,例如<and >

于 2012-07-07T00:08:14.530 回答
0

直接使用

$val = real_escape_string($this->input->post('name'));
于 2012-07-07T00:08:50.933 回答