我对parse_str和mysql_real_String有疑问。 我可以这样做,并将影响表单中的所有参数吗?
$post_data = mysql_real_escape_string($_post['form']);
parse_str($post_data,$query)
print_r($query)
INSERT INTO xyz(id,name) VALUES(1,$query['name'])
或者
parse_str($_POST['form'],$query)
INSERT INTO xyz(id,name) VALUES(1,$query['name'])
print_r($query)
所以问题是mysql_real_escape_String是否会影响$ _post ['form']的所有POST参数,或者我必须在SQL中显式地生成该语句?。
答案 0 :(得分:1)
parse_str
和mysql_real_escape_string
使用不同的编码。 parse_str
解码了mysql_real_escape_string
无法识别的百分比编码:
$_post['form'] = 'name='.rawurlencode('\'"\\');
$post_data = mysql_real_escape_string($_post['form']);
parse_str($post_data, $query);
echo $query['name']; // output: '"\
您需要按正确的顺序应用编码。在将值放入MySQL字符串文字之前,mysql_real_escape_string
必须始终正确。
与往常一样,将值作为预准备语句提供的参数传递将是更好的解决方案。