只是想知道,为了清理用户输入,我在数据插入表之前使用mysql_real_escape_string()。因此,当用户输入以下内容时:
Hi I'm just testing this
它完全放入表中,完全如上所述。问题是,如果我要通过PHP提取数据并将其放入变量中,比如$ string,如果我然后使用该变量将数据插入表中的新行,会发生什么?如:
<?php
$result = mysql_query( "SELECT data FROM table WHERE id='1'" ); //data = Hi I'm just testing this
$result_array = mysql_fetch_array( $result );
$string = $result_array['data']; //string = Hi I'm just testing this
$insert = mysql_query( "INSERT INTO table (data) VALUES ('$string')" ) or die(mysql_error());
?>
单引号(')会导致这种情况出现问题吗?在这种情况下我应该使用$ string = mysql_real_escape_string($ result_array ['data'])吗?
谢谢!
答案 0 :(得分:0)
一旦数据从MySQL中撤出,它就像您要在查询中使用的任何其他数据一样:您必须进行适当的转义/引用,或使用预准备语句。 PHP中没有一个神奇的标志,上面写着“这来自数据库并且应该从它返回”。
另一种方法是使用INSERT INTO ... SELECT FROM
语法在数据库中完全执行操作,如果符合条件的话。
答案 1 :(得分:0)
mysql_real_escape_string()
只是准备将其插入数据库,一旦您再次请求数据,它将处于其原始形式,即您必须在尝试插入之前再次对其进行清理,就像上面的示例一样。< / p>