我正在使用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。显然,我是新手,所以我错过了一些东西,只是好奇。
如果您逐行浏览代码并查看它的功能,很明显该函数是用来记录和执行查询的。mysql_query
将执行sql,但不做任何日志记录。
因为你不需要每次都写mysql_query
,因为你不需要每次都写错误处理,当你要写一个mysql查询。所有重复的事情都可以在自定义函数中处理。这就是我们编写自定义函数的原因。你不需要在每次mysql_query调用时都写mysql_error(),因为你有自己的自定义mysql_error()可以处理所有这些事情。
我们可以在一个自定义函数中处理泛化的东西,这样我们就不必在每次调用mysql_query时一次又一次地编写它们。
在本例中,to
- 当STORE_DB_TRANSACTIONS设置为true时,
- 记录所有数据库查询,并且
- 以一致的方式引发(并记录)由此类查询引起的任何错误
不评论代码的实际质量,这是一种非常常见的做法。
在这个函数中,它们不仅调用mySQL,而且将查询记录到日志对象中,根据框架常量运行检查并定义自定义错误处理程序。这是一个函数,因为他们不想在每次查询DB时都将此代码写出来。