mysql_real_escape_string不允许字符串通过

时间:2013-06-10 23:20:35

标签: php mysql

我正在尝试清理进入我数据库的字符串。但是使用下面的代码,我没有得到我的数据库的更新。

首页以输入形式发布:

$note="Here is some example text";

接收页面:

$note = $_POST['note'];
$note = mysql_real_escape_string($note);
$sql="UPDATE some_table SET notes='$note' WHERE id='$some_id'";
$result=mysql_query($sql);

当我取出mysql_real_escape_string行时,它可以工作,但不能在那里使用它。 我错过了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

我强烈建议使用Prepared Statement,mysql_real_escape_string()不能完全保护您免受SQL注入。

您的更新示例:

<?php
// connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

// query
$sql = "UPDATE some_table 
        SET notes=? 
        WHERE id=?";
$q = $conn->prepare($sql);
$q->execute(array($$_POST['note'], $some_id));
?>

更多详情:http://www.php.net/manual/en/intro.pdo.php