mysql插入问题

时间:2011-02-21 23:33:22

标签: php mysql

如果我尝试在Saxon genitive中插入数据库中的东西,我的php脚本将无法工作(例如,不会插入值“mike”)。 PHP代码简单明了:

"INSERT INTO cache (id,name,LinkID,number,TChecked) VALUES(".$idUser.",'".$LinkName."',".$LinkID.",".$number.",NOW());"

一切都很有效,直到“$ LinkaName”获得“特殊字符”的某些价值。如何将“mike”,“不会”等值添加到MySql数据库中?

4 个答案:

答案 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)

如果您使用的是mysqliPDO而非标准扩展程序,则可以使用prepared statement代替转义。