这可能是一个非常愚蠢和不言而喻的问题:我正在像这样剥离我的提交(但需要提交到我的表中,并将数据回显到屏幕上):
$num_of_badges = stripslashes(trim(mysql_real_escape_string($_POST['num_of_badges'])));当然,数据是传递的,但是stripslashes()``** here defeat the purpose ofmysql_real_escape()`呢?
所以: Bill's变成了桌子上的Bill,并在屏幕上回响。
发布于 2011-03-16 10:12:35
需要提交到我的表,并将数据回显到屏幕上
这句话是你所有问题的关键。
虽然trim()和conditional stripslashes()是“提交”相关的,但mysql_real_escape_string是完全不同的事情,它与提交、输入、输出等无关。它只与SQL查询有关。
因此,这些功能永远不应该混合在一起。
get_magic_quotes_gpc()检查。仅适用于HTTP输入变量。上面这两个可以在你的代码顶部盲目地使用。但是第三个,
正如已经说过的,
另外,我也希望你不会在将数据插入数据库后立即打印出来。你宁愿做一个重定向,然后从数据库中读回你新写的数据。
发布于 2011-03-16 09:34:09
或者,您可以使用prepared statements而不损坏您的数据:
<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET['name']))) {
while ($row = $stmt->fetch()) {
print_r($row);
}
}
?>发布于 2011-03-16 09:35:58
这里的答案很简单,那就是条带化实际上是在绕过mysql_real_escape_string。
$num_of_badges = trim(stripslashes($_Post['num_of_badges']));
$query_part = mysql_real_escape_string($_Post['num_of_badges']); // Or whatever...这可能是你必须要做的,记住你不需要总是超级简洁。一行一行。:P
https://stackoverflow.com/questions/5320027
复制相似问题