如何从外部源转义字符以插入数据库?

时间:2012-11-06 13:15:12

标签: php mysql mysql-real-escape-string

insert.php落后htaccess/passwd

它从外部源抓取数据,然后将其转换为变量以插入数据库。

我收到一个mysql错误,我认为这是由于外部源中存在左右括号(即此处的某些文本)引起的。

我使用了mysql_real_escape_string,但在这种情况下它似乎不起作用。

$con = mysql_connect("localhost","user_name","password");
if (!$con)
{
    die('Could not connect: ' . mysql_error());
}

mysql_select_db("user_dbname", $con);

// escape characters
$escaped_value = mysql_real_escape_string($var);

$sql = "INSERT INTO data (field1, field2, field3, field4, field5, field6)
        VALUES ('$_POST[field1]','$_POST[field2]','$_POST[field3]','$_POST[field4]',
                '$field5','$escaped_value', )";
;

3 个答案:

答案 0 :(得分:0)

使用mysql_real_escape_string方法,您可以将变量放在{}字符

之间

答案 1 :(得分:0)

您在最后一个导致查询失败的数据字段后面有一个逗号。此外,您应该将$ _POST数组变量称为$_POST['field1']而不是$_POST[field1]

尝试

$sql = "INSERT INTO data (field1, field2, field3, field4, field5, field6)
    VALUES ('".$_POST['field1']."','".$_POST['field2']."','".$_POST['field3']."','".$_POST['field4']."',
            '$field5','$escaped_value')";

实际上,mysql_real_escape_string是您遇到的问题中最少的。 :)

答案 2 :(得分:0)

最好的方法是使用准备好的语句,最终无论如何都要这样做:see the red box? {@ 1}}扩展名已被弃用。使用替代方案:mysql_*PDO

mysqli_*