$sql和$result—同时使用这两种方法的原因


$sql and $result - Reason for using both?

只是想提高代码的效率,所以一个简单的问题:

我经常看到人们使用一个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);

等等。它确实可以归结为偏好,但我发现这种方法更灵活,适应性更强/可调试性更强。