只是试图提高代码的效率,这是一个简单的问题:
我经常看到人们使用一个var($ sql)声明他们的SQL查询,然后将结果放入另一个($ result)。除了让事情稍微整洁之外,人们还有什么理由这样做吗?我认为将SQL查询直接放入mysql_query()会更好。但是人们可能还有其他一些隐藏的原因。
答案 0 :(得分:3)
通常可以使调试更容易:如果出于任何原因SQL查询出现问题,您只需打印$sql
变量的内容即可。
此外,SQL查询的内容可能会变得很长,并且在函数调用中超过一定长度看起来相当难以理解。
答案 1 :(得分:3)
如果出现错误,它会导致更清晰的编码。
如果您在第151行和151处有错误:
mysql_fetch_array(mysql_query("SELECT * FROM something")); //where is the error
那时更难阅读:
第150行和第149-151行的错误是:
$sql = "SELECT * FROM something";
$result = mysql_query($sql); // ahh the error is here
mysql_fetch_array($result);
答案 2 :(得分:2)
没有任何神奇的东西。将SQL放入变量有很多好处,而且缺点很少;将SQL查询直接传递给mysql_query
函数也是如此。
对于初学者......你直接使用mysql_query
?大多数开发人员都会将这些函数包装到某种数据库对象/控制器中,或者他们将使用PDO等。无论如何,将SQL放入变量可以让您轻松地将您正在传递SQL 的内容换成。当我更新代码以切换数据库访问方法时,如果我更改mysql_query($sql)
而不是mysql_query('SELECT .... SUPER LONG QUERY ...')
这样的行,则会更容易。
调试时,可以简单地echo($sql)
。如果想要与数据查询分开进行计数查询:
$sql = ' FROM table_name WHERE `some_field` = 1';
$count = db::getField('SELECT COUNT(`id`) '.$sql);
$page_worth = db::getRows('SELECT `id`, `name` '.$sql.' LIMIT '.$page.', '.$per_page);
等等,等等。它确实归结为偏好,但我发现这种方法更灵活,可快速适应/调试。