INSERT INTO:mysql_real_escape_string替代方案

时间:2013-04-25 01:05:35

标签: php mysql pdo

 $q = "INSERT INTO articles VALUES( mysql_real_escape_string($_GET["article"]) )
 $req = $bdd->prepare($q); 
 $req ->execute();

我一直在处理另一个服务器,其中mysql_real_escape_string()仍然没有过时,现在我将网站移动到另一个显然不再接受此功能的mysql服务器。而且,很明显我需要使用一些PDO

那么mysql_real_escape_string()的PDO等价物是什么?我正在尝试这样的事情

 $idc = new PDO(...);
 $q = "INSERT INTO articles VALUES( $idc->quote(($_GET["article"])));
 $req = $bdd->prepare($q); 
 $req ->execute();

我确实使用预备语句,但我怀疑我的PDO :: quote在某处错了。

但它没有呈现相同的结果...... 谢谢。

2 个答案:

答案 0 :(得分:1)

PDO::quote相当于mysql_real_escape_string。如果出于某种原因你不能使用预备语句,你可以像这样使用它:

$q = "INSERT INTO articles VALUES (" . $idc->quote($_GET["article"]) . ")";

一个显着的区别是它包含字符串周围的引号,而mysql_real_escape_string则没有(所以你必须在INSERT字符串中加上引号)。

答案 1 :(得分:0)

使用prepared statements(首选)或PDO::quote()