PHP URL解码问题
我通过jquery将下面的javascript endcodeURI值发布到一个PHP脚本中,在那里我使用urldecode并将该值存储在db中,但没有存储'>'符号PHP URL解码问题,php,Php,我通过jquery将下面的javascript endcodeURI值发布到一个PHP脚本中,在那里我使用urldecode并将该值存储在db中,但没有存储'>'符号 testid=174742228&VI-42=zdddfsdsdf%3Edsdfsdfs%3Efsdfsdfs& +------+-----------+-----+-----+------------------------------+------+ | id | testid | sec | qi
testid=174742228&VI-42=zdddfsdsdf%3Edsdfsdfs%3Efsdfsdfs&
+------+-----------+-----+-----+------------------------------+------+
| id | testid | sec | qid | ans | img |
+------+-----------+-----+-----+------------------------------+------+
| 6510 | 174742228 | VI | 42 | zdddfsdsdf dsdfsdfs fsdfsdfs | NULL |
+------+-----------+-----+-----+------------------------------+------+
foreach ($_POST as $k => $v) {
$flds = explode("-", $k);
if (count($flds) == 3) {
$datai = array($flds[0], $flds[1], $flds[2], $testid, urldecode(mysql_escape_string($v)));
$resi = $dbh->prepare("INSERT INTO result (sec, img, qid, testid, ans) VALUES (?, ?, ?, ?, ?)");
$resi->execute($datai);
} else {
$data = array($flds[0], $flds[1], $testid, urldecode(mysql_escape_string($v)));
$res = $dbh->prepare("INSERT INTO result (sec, qid, testid, ans) VALUES (?, ?, ?, ?)");
$res->execute($data);
}
}
提前感谢尝试颠倒
urldecode(mysql\u escape\u string($v))的顺序
。在将数据转换为实际进入数据库的数据之前,您正在对其进行转义。我不知道这是否能解决您的问题,但您的代码中存在一些问题:
mysql\u escape\u string
已弃用,您应该使用mysql\u real\u escape\u string(urldecode($str));
之前进行urldecode$testid
(而不是$\u POST['test\u id']
)的事实使我认为您可能正在使用register\u globals。这可能不是事实,但只是为了确保除此之外,代码看起来很好,不应该使
符号消失。检查您的MySQL列类型和/或尝试$\u POST并检查您在那里得到了什么 一,。存储数据的sql查询是什么?2.ans
有哪种列类型?能否显示创建查询的代码?错误可能就在那里。可能需要显示有关如何插入它以及如何对其进行URL解码的代码以帮助找到问题。foreach($\u POST as$k=>$v){$flds=explode(“-”,$k);if(count($flds)==3){$datai=array($flds[0],$flds[1],$flds[2],$testid,urldecode(mysql\u escape\u string($v)))$resi=$dbh->prepare(“插入结果(sec,img,qid,testid,ans)值(?,?,?,?,?)”;$resi->execute($datai);}否则{$data=array($flds[0],$flds[1],$testid,urldecode(mysql_escape_string($v));$res=$dbh->prepare(“插入结果(sec,qid,testid,ans)值(?,,,?,,,,?)”);$res->execute($data);}}
请编辑您的问题,而不是将代码作为注释发布。:)谢谢。我尝试了var_dump,但缺少
符号。有什么问题吗?我可以看到ajax正在将正确的编码数据发送到php脚本testid=723006807&VI-28=adads%3Easdasda%3EAsdasd%3Easdasda%3Easdasda&