PHP&带撇号的MySql查询

时间:2014-09-09 09:54:37

标签: php mysql

我有以下php版本:

PHP Version 5.3.2-1ubuntu4.19

和这个php字符串:

$l_sDesc = "It doesn' t contain any dangerous substances";

如果我尝试使用db_query(Drupal)进行查询,则由于撇号而出现错误;

db_query("UPDATE mytable SET description= '$l_sDesc' where id = $id");

我尝试使用mysql_real_escape_string(),但我得到一个空字符串:

$l_sDesc = mysql_real_escape_string($l_sDesc);  //i have an empty string as result

有什么问题?

3 个答案:

答案 0 :(得分:0)

Drupal使用另一个DB Wrapper。通常,您可以创建预准备语句。

https://api.drupal.org/api/drupal/includes!database!database.inc/group/database/7

这是一个正确的例子。如果您使用正确的预准备语句,您的输入将被过滤。

否则请使用stripslashes()

http://php.net/manual/de/function.stripslashes.php

答案 1 :(得分:0)

汤姆,你需要"准备"在实际运行语句之前SQL的字符串。

在实际使用它们之前,请尝试在字符串上使用PHP函数mysql_real_escape_string。

http://php.net/manual/en/function.mysql-real-escape-string.php

答案 2 :(得分:0)

我建议使用$l_sDesc = htmlspecialchars($l_sDesc);