使用PDO PHP在mysql中插入“&”符号?

3
我正在使用PDO向MySQL插入值。
我是这样做的:
$sql = $db->prepare("INSERT INTO table(value) VALUES(?)");
$sql -> execute(array($value));

我注意到如果我在输入框中键入文本&,它会在插入mysql时被删除。我想这是好的,因为它表明mysql注入得到了保护?那么,如果我想将这个值作为文本呈现,例如:beer & wine,有什么建议吗?

它不应该转义 &。你的字符串在查询中被引用了吗? - alex
我刚才写的例子里有一个问号 ?,不用引号。 - hellomello
你不需要将 ? 包含到引号中...而且 & 与注入无关... - Damien Pirsy
怎么会这样,为什么无法插入? - hellomello
  1. 为什么要加jQuery标签?我看不到任何jQuery内容...我会移除这个标签;
  2. 你确定&被丢弃了吗?在获取“value”字段时,使用var_dump()函数输出字符串。无论如何,也许我在之前的评论中表述得不好,但是占位符?不应该用引号括起来。
- Damien Pirsy
显示剩余3条评论
1个回答

1
我猜这是好的。 这明显是不好的。一个不能存储某些符号的数据库是无意义的。想象一下,如果在这个站点上使用了一个这样的数据库。你甚至无法提出问题! 它没有显示任何内容。&与注入无关,正如我之前所说,删除符号与注入保护没有任何关系。 它并没有被删除,就像你看到的那样,你看到的不在数据库中,而是在其他地方。这是你的问题。 在插入之前检查你的数据, 检查你的数据库。找到你未受影响的&。然后跟踪你的数据流,找到丢失&的地方。 然后提问。

不要称之为粗鲁。它可能很严厉,但并不粗鲁。我不太关心措辞,但对于那个拥有大红按钮的人来说,这是一个触发词。是的,某些答案比回避答案更好。 - Your Common Sense

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接