为什么使用自定义sql函数用于已经存在的标准函数?

时间:2011-11-18 16:10:49

标签: php mysql

我正在使用oscommerce,所以你可能需要了解它才能回答这个问题,但我认为这不是很普遍。

为什么原始程序员会创建函数来执行这样的基本SQL查询:

  function tep_db_query($query, $link = 'db_link') {
    global $$link, $logger;

    if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS == 'true')) {
      if (!is_object($logger)) $logger = new logger;
      $logger->write($query, 'QUERY');
    }

    $result = mysql_query($query, $$link) or tep_db_error($query, mysql_errno(), mysql_error());

    if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS == 'true')) {
      if (mysql_error()) $logger->write(mysql_error(), 'ERROR');
    }

    return $result;
  }

当我似乎能够使用常规mysql_query完成查询?

我的猜测是,您不必继续重新定义数据库连接?我不确定,因为我可以像我说的那样使用mysql_query。很显然,我对此很陌生,所以我错过了一些好奇的东西。

4 个答案:

答案 0 :(得分:2)

如果你逐行浏览代码并查看它的作用,很明显该函数是为了记录和执行查询而编写的。 mysql_query将执行sql,但不执行任何记录。

答案 1 :(得分:1)

因为您不必每次都编写mysql_query,因为您每次编写mysql查询时都不必编写错误处理。所有重复的事情都可以在该自定义函数中处理。这就是我们编写自定义函数的原因。你不必在每个mysql_query调用中编写mysql_error(),因为你有自己的自定义函数可以处理所有这些事情。

我们可以在一个自定义函数中处理泛化事务,因此我们不必每次调用mysql_query时反复写入它们。

答案 2 :(得分:0)

在这个函数中,他们不仅调用mySQL,还将查询记录到日志对象中,对框架常量运行检查并定义自定义错误处理程序。这是一个函数,因为他们不想在每次查询数据库时都写出这个代码。

答案 3 :(得分:0)

在这种情况下,到

  • 在STORE_DB_TRANSACTIONS设置为true和
  • 时记录所有数据库查询
  • 以一致的方式提出(并记录)此类查询产生的任何错误

如果不评论此代码的实际质量,这是一种非常常见的做法。