为什么在mysql_query(“string”)中使用$ query而不是直接查询字符串?

时间:2011-10-24 21:17:48

标签: php mysql

有人可以向我解释为什么以下情况不起作用:

mysql_query("DELETE FROM `categories` WHERE `id` = '{$id}'");

以下情况确实有效:

$query = "DELETE FROM `categories` WHERE `id` = '{$id}'";
mysql_query($query);

4 个答案:

答案 0 :(得分:3)

它们都应该完全相同。

试试这个:

mysql_query("DELETE FROM categories WHERE id = '{$id}'");

这总是对我有用。但是将它放在变量中会使得有时更容易使用。

答案 1 :(得分:2)

两者之间没有区别。两者都容易受到SQL注入的攻击。您应该使用预备语句或mysql_real_escape_string

答案 2 :(得分:2)

两者之间没有任何功能差异,但将查询存储在单独的变量中可以更容易地调试生成的语句。

e.g。

$sql = "...";
$result = mysql_query($sql);
if ($result === FALSE) {
    echo "Query failed: ", $sql, mysql_error();
}

答案 3 :(得分:0)

我怀疑在线示例刚刚开始使用单独的$query变量,并且人们在没有真正考虑它的情况下复制它,然后更多的例子实现了它,现在有很多人在不知道原因的情况下这样做。 C'est la vie。