答案 0 :(得分:6)
两个建议:
mysql_XXX
API。它会在某些时候被废弃,它缺乏关键功能,最明显的是参数化查询。如果您不知道参数化查询是什么,请阅读。它们是保持SQL连接代码健全的唯一理智方式。对于PHP,我建议使用PDO - 这有点不那么简单,但它非常值得学习曲线。SET NAMES UTF-8
建立连接后的第一件事),php的内部编码(mb_internal_encoding
)和输出编码(mb_http_output
)。另外,确保您实际输出的是UTF-8;这意味着所有源文件和模板也应该以utf-8编码保存。无论你做什么:永远不会使价值观或替代价值。像这样的代码:mysql_query("SELECT * FROM users WHERE USERNAME = '$username'");
应该是非法的 - 有太多的方法可以用脚shoot射击自己并引入SQL注入漏洞。 (如果你不知道SQL注入是什么,那么也要阅读它。)
最后;关于如何调试情况的一些提示。
答案 1 :(得分:2)
此(additionally)看起来已启用magic_quotes_gpc
Docs。这是一种不安全的服务器设置,它会破坏您的数据。
另见:
答案 2 :(得分:0)
使用prepared statements而不是转义,看看是否有帮助。另请检查code pages/ characters集是否正确。
答案 3 :(得分:-2)
实际上非常简单..
例如假设我想在我的表中插入一个字符串“Welcome”然后我必须写这样的查询:
插入mytable
(name
)个值('welcome')
如果你动态插入你的记录意味着用PHP或任何语言写,那就像这样写
$ string =“welcome”;
mysql_query(“插入mytable name
值('”。$ string。“')”);
出于安全目的,还可以启用魔术引号...请访问以获取更多信息
http://www.php.net/manual/en/function.get-magic-quotes-gpc.php