1

原帖:

我的脚本不工作(它没有记录数据)。在我添加 mysql_real_escape_string 之前它正在工作,所以我想知道我是否没有正确实现它:

$array = json_decode($downstream,TRUE);
$name = $array["status"]["name"];
$title = $array["status"]["title"];
$table = "mrTable";
$insert = "INSERT INTO $table (name, title) VALUES ('".mysql_real_escape_string($name)."', '".mysql_real_escape_string($title)."')";

INSERT 的实现对您来说是否正确?

更新:

这是整个代码,希望这会有所帮助。它仍然无法正常工作。当使用 real_escape_string 函数时,没有数据元素被记录在数据库中。一旦我删除了转义功能,数据就写得很好(当然,除非出现撇号)。

开始了:

//read contents of this file:

$json_data = file_get_contents('../list.txt');

//json to a php array

$array = json_decode($json_data,TRUE));

//store in mysql table

$table = "table1";
$name = mysql_real_escape_string($array["current"]["name"]);
$code = mysql_real_escape_string($array["current"]["code"]);

$insert="INSERT INTO $table (name, code) VALUES ('$name', '$code')";

$con = mysql_connect($db, $user, $pass);
if (!$con)
    {
    die ('Could not connect: ' . mysql_error());
    };

mysql_select_db($yup, $con);

mysql_query($insert) OR die(mysql_error());

mysql_close($con);

更新 2

固定的!在第一次提到 mysql_real_escape_string 之前,您需要连接到数据库。现在一切正常......没有空白数据。

4

3 回答 3

1

您需要连接到数据库才能使用 mysql_real_escape_string。你好像不是。确保 mysql_connect 在您定义的行上$insert

于 2012-08-03T20:38:18.363 回答
0

切勿将值直接插入查询字符串!即使他们逃脱了,这也不是一个聪明的主意。相反,请使用参数化语句,这将使像 ' OR 1 = 1 之类的攻击无用。您也不需要转义参数化语句的值......

PREPARE statement FROM
'INSERT INTO table (col1, col2)
 VALUES
 (?, ?)'

EXECUTE statement USING ('val1', 'val2')

DEALLOCATE statement

仅在完成后解除分配。您可以使用不同的值重新执行任意多次。如果您无论如何都要重新执行,那么这样做也会提高性能!(因为该语句只为无限次的执行准备一次。)我建议你实现这个方法,如果你仍然有问题,然后再回来。

于 2012-08-03T20:45:46.797 回答
-1

请不要试图逃避你的参数。使用绑定变量。有关示例,请参见http://bobby-tables.com/php.html

于 2012-08-03T21:53:39.073 回答