如果我尝试在Saxon genitive中插入数据库中的东西,我的php脚本将无法工作(例如,不会插入值“mike”)。 PHP代码简单明了:
"INSERT INTO cache (id,name,LinkID,number,TChecked) VALUES(".$idUser.",'".$LinkName."',".$LinkID.",".$number.",NOW());"
一切都很有效,直到“$ LinkaName”获得“特殊字符”的某些价值。如何将“mike”,“不会”等值添加到MySql数据库中?
答案 0 :(得分:3)
您需要正确地转义这些字符串。此外,您现在使用的技术会使您面临SQL注入攻击。
mysql_real_escape_string的PHP文档为您应该做的事情提供了一个很好的例子:
// Query
$query = sprintf("INSERT INTO cache (id,name,LinkID,number,TChecked) VALUES(%d,'%s',%d,%d,'%s');",
mysql_real_escape_string($idUser),
mysql_real_escape_string($LinkName),
mysql_real_escape_string($LinkID),
mysql_real_escape_string($number),
mysql_real_escape_string(NOW()));
答案 1 :(得分:2)
您必须先将它们转义,否则会生成无效的查询。单引号与字符串开头的单引号匹配。
$LinkName = mysql_real_escape_string($LinkName);
您还可以使用预准备语句将参数绑定到查询,而不是连接和发送字符串(使用PDO或mysqli库而不是mysql库)。
答案 2 :(得分:2)
您需要对这些值使用mysql_real_escape_string()
。
还要确保你是否引用其他变量,将它们转换为整数(这是你不引用它们的唯一原因)。
答案 3 :(得分:1)
如果您使用的是mysqli或PDO而非标准扩展程序,则可以使用prepared statement代替转义。