Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么对已经存在的标准sql函数使用自定义sql函数?_Php_Mysql - Fatal编程技术网

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

Php 为什么对已经存在的标准sql函数使用自定义sql函数?,php,mysql,Php,Mysql,我使用的是oscommerce,所以您可能需要了解它才能回答这个问题,但我不认为这是非常普遍的 为什么原始程序员会创建函数来执行以下基本sql查询: function tep_db_query($query, $link = 'db_link') { global $$link, $logger; if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS == 'true')) {

我使用的是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\u查询完成查询时


我猜这样你就不必一直重新定义db连接了?不过我不确定,因为我可以像我说的那样使用mysql\u查询。很明显,我在这方面是个新手,所以我遗漏了一些奇怪的东西。

如果你逐行检查代码,看看它是做什么的,很明显,这个函数是为了记录和执行查询而编写的
mysql\u查询
将执行sql,但不做任何日志记录。

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


我们可以在一个自定义函数中处理泛化问题,这样我们就不必在每次调用mysql_查询时反复编写它们。

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

在这种情况下

  • 当STORE_DB_TRANSACTIONS设置为true时,记录所有DB查询,以及
  • 以一致的方式引发(并记录)由此类查询导致的任何错误

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

您必须询问该函数的作者,而不是此处。您为什么要记录数据库操作?查看所做的更改等?@Sackling,用于调试。并非所有操作都会进行更改。好的,谢谢。这基本上就是我想知道的,使用自定义函数是否是标准的。显然,还有比我想象的更多的功能。谢谢