gpt4 book ai didi

php - 反斜杠在 mysql 中转义引号吗?

转载 作者:行者123 更新时间:2023-11-28 23:56:17 25 4
gpt4 key购买 nike

这是失败查询的 var_dump

string 'INSERT INTO event(name, description, location, image, datetime) VALUES('Nica\'s Weight Loss Class', 'Description goes here!', 'Location', 'Nica's Weight Loss Class.png', '2015-01-01T01:00')' (length=189)`

错误是

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 's Weight Loss Class.png', '2015-01-01T01:00')'

创建查询字符串的代码行是:(所有变量都预先转义)

$query = "INSERT INTO event(name, description, location, ".($imageForEvent?"image, ":"")."datetime) VALUES('$evName', '$evDescription', '$evLocation', ".($imageForEvent?"'".basename($imageForEvent)."', ":"")."'$evDatetime')";

根据mysql docs反斜杠字符用于转义单引号。

然而,根据How to escape apostrophe (') in MySql? , 正确的做法似乎是双引号。

我已经测试了两种方法,它们在同一个地方给出了同样的错误。谁能阐明这个主题?

最佳答案

您只是在转义字符串中的第一个 'Nica's... 有两个地方,但您只是避开了第一个。第二个似乎是图像名称。如果你坚持使用 mysql_* 函数,那么你应该使用 mysql_real_escape_string在查询中的每个变量上。引号不是唯一需要转义的字符,并且会正确地转义它们。

但您真正应该做的是使用 mysqli 或 pdo 并在查询中绑定(bind)您的值。 mysql_* 函数已被弃用,将抛出错误并将在未来版本中删除。避开他们。绑定(bind)很容易做到,并且可以彻底解决这个问题,让您永远不必担心。

关于php - 反斜杠在 mysql 中转义引号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31595232/

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