gpt4 book ai didi

php - MySQL PHP Escape String '\' - 为什么它没有用反斜杠保存在数据库中?

转载 作者:可可西里 更新时间:2023-11-01 06:40:10 24 4
gpt4 key购买 nike

对转义字符串及其在数据库中的存储方式感到困惑

在我的 MySQL 调用中,我用反斜杠转义了一个字符串:

UPDATE `TABLE` SET `PERSONAL_BELONGINGS` = 'Tom\'s things'

但是当我查看 phpadmin 时 - 值是这样保存的:

|Tom's things|

为什么反斜杠没有保存到数据库中?当我将这个值读入 javascript 然后尝试传递它时,这会导致问题 - 我的 javascript 字符串将终止。这就是为什么我一开始就转义了这个角色。

为什么 MySQL 在将其保存到数据库之前删除 '\' 反斜杠?

如果不使用“\”将其保存在数据库中 - 那么在将其作为字符串传回 javascript 时最好的处理方法是什么?当作为字符串传递给 javascript 时再次转义它?

最佳答案

首先让我说,您真的不应该在数据库中以任何特定的转义格式存储数据,如果您以后需要以另一种格式提取数据或出于某种原因搜索数据,您会后悔的。您保存的格式现在看起来不错,在将数据传递给实际 Javascript 时,最好在代码中为 Javascript 添加反斜杠。

现在这就是它目前表现如此的原因;

在字符串 'Tom\'s things' 中, \'character escape sequence并且实际上仅用于让 MySQL 了解如何解析 SQL 字符串,它永远不会按原样保存到数据库中。

转义字符 ' 的原因在您开始显示的 SQL 语句中,否则 MySQL 无法知道字符串不以 'Tom 之后的单引号结尾。 .

如果您使用 MySQLi 或 PDO 准备好的语句而不是自己构建 SQL 语句,MySQL 将允许您保存完全不变的值,而无需转义任何内容。这绝对是首选选项,因为不支持准备语句的 MySQL API 无论如何都已弃用。

关于php - MySQL PHP Escape String '\' - 为什么它没有用反斜杠保存在数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14795811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com