mysql_real_escape_string的问题

时间:2011-04-07 15:56:01

标签: php mysql

我在表单上有一个名为filter1的字段,我希望能够将引用的文本保存到mysql中。所以我希望能够保存值“foo bar”...而不是保存只是/

这就是我所拥有的:

$keyword1 = mysql_real_escape_string($_POST['filter1']);

感谢任何帮助。

以下是我构建查询的方法

$keyword1 = mysql_real_escape_string($_POST['filter1']);
$keyword2 = $_POST['filter2'];//."|".$_POST['filterby'];
$keyword3 = $_POST['filter3'];//."|".$_POST['filterby2'];

$urlfilter1 = $_POST['url1'];
$urlfilter2 = $_POST['url2'];//."|".$_POST['url_filter'];
$urlfilter3 = $_POST['url3'];//."|".$_POST['url_filter2'];
//echo "combo_id:".$num." <BR></br>";
//echo "status:".$status." <BR></br>";
//echo "saveQuery:".$saveQuery." <BR></br>";
//$myFilter = "save"; 
$insert_query = sprintf("UPDATE COMBINATION 
                        SET STATUS_ID=%s, QUERY=\"%s\", 
                        KEYWORD1=\"%s\", KEYWORD2=\"%s\", KEYWORD3=\"%s\", 
                        URLFILTER1=\"%s\", URLFILTER2=\"%s\", URLFILTER3=\"%s\" 
                        WHERE COMBINATION_ID=%s",$status,$saveQuery,
                        $keyword1,$keyword2,$keyword3,
                        $urlfilter1,$urlfilter2,$urlfilter3,
                        $num);
//echo "insert_query:".$insert_query." <BR></br>";
$result = mysql_query($insert_query) or die(mysql_error());
if($result)
{
    echo "Saved successfully<br>";
}

} ?&GT;

3 个答案:

答案 0 :(得分:10)

除非您有一个非常古老且受限制的环境,use PDO。它将为您节省汗水和泪水。 With PDO it is very easy to escape input and avoid SQL injection attacks, which is illustrated in the answer that this link leads to

答案 1 :(得分:1)

首先,您需要使用mysql_connect() http://php.net/manual/en/function.mysql-connect.php

连接到数据库

然后,您需要使用mysql_query() http://php.net/manual/en/function.mysql-query.php

调用您的INSERT查询

顺便说一句,在将字符串放入查询之前,你通过转义字符串做了正确的事情,做得好:)

答案 2 :(得分:0)

由于某种原因,您只转义了一个变量,同时向查询中添加了几个变量 你为什么不逃避它们?

但是,您的问题可能在其他地方。 什么是$ saveQuery我很好奇?