0

我在学校学会了做类似下面的事情,通过$_POSTed 表单数据将数据插入 SQL。

$title = mysql_escape_string($_POST["newstitle"]);
$body = mysql_escape_string($_POST["newsbody"]);
$addnews = $db->query("
    INSERT INTO news
        VALUES (CURRENT_DATE, '$body', '$title', '')
");

但是,最近有人告诉我应该使用以下内容:

$addnews = $db->prepare("
    INSERT INTO news
        VALUES (CURRENT_DATE, :body, :title, '')
");
$addnews->execute(array(
    ':body' => $_POST["newsbody"],
    ':title' => $_POST["newstitle"]));

第二段代码有什么好处?我在上述课程中的教授非常传统,我想是在教授一种古老的做事方式。他确实使用了很多 PDO,但在上面的示例中从未使用过。是的,我知道mysql_escape_string()它已被弃用,但这就是我被教导的方式。我正在努力改变我的方法以更适合当前的趋势。

4

1 回答 1

0

你的问题可以很容易地回答。

我希望你明白,任何值都必须正确格式化才能放入 SQL 查询中。所以准备好的声明确实如此。与仅进行部分格式化的任何 *_escape_string 不同,准备好的语句旨在完成完整的格式化。就在必须完成的地方——不早,不晚——所以它不可能忘记。这才是重点。

您只需要了解格式和转义之间的区别,这是没有教授能理解的。

于 2013-09-01T04:47:42.953 回答