只是想提高代码的效率,所以一个简单的问题:
我经常看到人们使用一个var($SQL)声明他们的SQL查询,然后将结果放入另一个var中($result)。除了保持稍微整洁之外,人们这样做还有什么原因吗?我认为将SQL查询直接放入mysql_query()会稍微好一些。但人们躲藏起来可能还有其他原因。
这通常是为了让调试更容易:如果SQL查询由于任何原因出现问题,您可以简单地打印$sql
变量的内容。
此外,SQL查询的内容可能会变得很长,并且在函数调用中超过一定长度看起来很难读取。
如果出现错误,它会导致更干净的编码。
如果您在第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);
它并没有什么神奇之处。将SQL放入一个变量中有很多优点,但缺点很少;对于将SQL查询直接传递给CCD_ 2函数来说,情况并非如此。
首先。。。您直接使用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);
等等。它确实可以归结为偏好,但我发现这种方法更灵活,适应性更强/可调试性更强。