我通过jquery将下面的javascript urldecode值发送到一个endcodeURI脚本,在那里我使用urldecode并将该值存储在数据库中,但没有存储'>‘符号。
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);
}
}提前感谢
发布于 2011-04-19 04:26:44
我不知道这些是否能解决您的问题,但是您的代码中有一些问题:
mysql_escape_string已被弃用,您应该在mysql_real_escape_string.mysql_real_escape_string(urldecode($str));).$testid (而不是$_POST['test_id'])的事实使我认为您可能正在使用URL可能不是这样,但只是为了确认一下。除此之外,代码看起来还不错,不应该让>符号消失。检查您的MySQL列类型和/或尝试var_dumping $_POST并检查其中的内容。
发布于 2011-04-19 04:19:02
尝试颠倒urldecode(mysql_escape_string($v))的顺序。在将数据转换为实际进入数据库的数据之前,您可以对数据进行转义。
https://stackoverflow.com/questions/5708246
复制相似问题