mysql_real_escape_string,包含从数组中提取的变量

时间:2012-08-03 20:25:08

标签: mysql mysql-real-escape-string

原帖:

我的脚本无效(它没有记录数据)。它在我添加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函数时,NONE数据元素将记录在数据库中。一旦我删除了转义函数,数据写得很好(当然除非出现撇号)。

我们走了:

//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之前,您需要连接到数据库。现在一切正常......没有空白数据。

3 个答案:

答案 0 :(得分:1)

您需要连接到数据库才能使用mysql_real_escape_string。你似乎不是。确保mysql_connect位于您定义$insert

的行上

答案 1 :(得分:0)

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

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

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

DEALLOCATE statement

只有在你完成后才能解除分配。您可以根据需要使用不同的值重新执行多次。如果你要重新执行,那么通过这种方式也可以获得性能提升! (因为该语句仅针对无限次执行而准备一次。)我建议您实施此方法,如果您仍然遇到问题,请回来。

答案 2 :(得分:-1)

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