Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在mysql表之间移动时转义字符串_Php_Mysql - Fatal编程技术网

Php 在mysql表之间移动时转义字符串

Php 在mysql表之间移动时转义字符串,php,mysql,Php,Mysql,如果我从MySQL结果中提取一个字符串-然后在MySQL_查询()中使用该字符串…我仍然必须转义它,对吗?一些我从未考虑过的事情,只是偶然发现。是的,你必须这么做。如果第一次插入该字符串而从未转义会怎么样?是。我假设你是指mysql\u real\u escape\u string这里,mysql将返回未转义的版本,因此如果你要重新转义,你必须重新转义值。是的,因为当你检索字符串时,它将不再转义。使用时: $sql = "INSERT yourtable(foo) VALUES ('" . my

如果我从MySQL结果中提取一个字符串-然后在MySQL_查询()中使用该字符串…我仍然必须转义它,对吗?一些我从未考虑过的事情,只是偶然发现。

是的,你必须这么做。如果第一次插入该字符串而从未转义会怎么样?

是。我假设你是指
mysql\u real\u escape\u string
这里,mysql将返回未转义的版本,因此如果你要重新转义,你必须重新转义值。

是的,因为当你检索字符串时,它将不再转义。使用时:

$sql = "INSERT yourtable(foo) VALUES ('" . mysql_real_escape_string($foo) . "')";

字符串未以转义形式存储在数据库中。MySQL解析查询时会删除转义,并且
$foo
的原始值是存储的值,也是您稍后再次读取数据时收到的值。

是的,您需要-原因是您将存储转义的数据,因此,当您检索它时,您可能已经将其取消转义为其原始形式(最终的想法是“按原样”存储输入数据以保留它,然后在输出时转义)


因此,您需要在后续查询使用过程中转义它,事实上,对于前端的输出,也需要转义它。(尽管出于前端目的,您可以根据数据类型使用htmlentities等。)

不一定“必须”,但对于安全实践,这是最好的做法。如果它们的意思是
mysql\u real\u escape\u string
,那么它们必须这样做。MySQL将在查询中返回未替换的版本。这不仅仅是为了安全,也是一个正确性的问题。如果用户以
O'Connor
的身份输入他们的名字,而您没有逃脱,那么查询将失败,您的用户将感到恼火并离开您的站点。