这可能是一个非常愚蠢且自我回答的问题:我正在删除我的提交内容(但需要提交到我的表格并将数据回显到屏幕上):
$num_of_badges = stripslashes(trim(mysql_real_escape_string($_POST['num_of_badges'])));
当然数据是传递的,但是stripslashes()``** here defeat the purpose of
mysql_real_escape()`?
所以:Bill's成为桌上的Bills并在屏幕上回显。
答案 0 :(得分:5)
或者你可以使用prepared statements而不是破坏你的数据:
<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET['name']))) {
while ($row = $stmt->fetch()) {
print_r($row);
}
}
?>
答案 1 :(得分:0)
需要提交到我的表格,并将数据回显到屏幕
这句话是你所有问题的关键。
虽然trim()
和条件 stripslashes()
是“提交”相关,但mysql_real_escape_string 完全不同,它与提交无关,输入,输出和所有东西。它仅与SQL查询有关。
所以,这些功能永远不应该混合在一起。
get_magic_quotes_gpc()
进行检查。仅适用于HTTP输入变量。 上面这两个可以在代码的顶部盲目使用。但第三个,
此外,我希望您在将数据插入数据库后不会立即打印。 您宁愿进行重定向,然后从数据库中读取新写入的数据。
答案 2 :(得分:-1)
这里的简单答案是striplahes实际上绕过了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