我在PHP中有几个mysql查询,在每次查询结束时我都这样做了
mysql_query(STRING) or die(mysql_error());
就DEV环境而言,这很好,但我不希望生产用户看到这些错误。通过设置ON OFF.
答案 0 :(得分:1)
除了你不应该使用mysql_
之外,你可以简单地做另一个功能:
define('DEV', true);
function mysql_query_custom() {
$result = call_user_func_array('mysql_query', func_get_args());
if ($result === false) {
if (DEV) {
die(mysql_error());
}
}
return $result;
}
mysql_query_custom(STRING);
答案 1 :(得分:1)
有很多方法可以做到。最简洁,最像你现在正在做的事情:
// do this once
$PRODUCTION = true;
// now use
mysql_query() or ($PRODUCTION ?: die(mysql_error()));
我提醒说,虽然从长远来看这不是一种可维护的调试方法。在这个帖子中有很多好的选择。
无论您做什么,都会在您的代码中开发全面的错误检测,日志记录和响应机制。如果您正在使用框架,请利用其设施。
答案 2 :(得分:0)
然后设置一个名为$DEBUG
的配置变量,并将逻辑包装在条件if
/ else
中?
$DEBUG = true;
if ($DEBUG) {
mysql_query(STRING) or die(mysql_error());
}
else {
mysql_query(STRING);
}
答案 3 :(得分:0)
const DEBUG = true;
function fail($message) { die (DEBUG ? $message : ''); }
...
use_mysql_query_even_though_it_sucks() or fail(mysql_error());
// seriously. Use mysqli.
答案 4 :(得分:0)
您可以更轻松地将所有die(
替换为error_handle(
或其他内容,并包含此功能:
function error_handle($err) {
die($err); // Comment this line out if you don't want the error to be displayed.
}
这也很棒,因为您可以在生产中扩展代码以记录错误等。如果您使用Git或其他版本控制系统,您还可以在全局代码中的某处定义$debug
- 变量。
修改:我建议您更换所有die(
而不仅仅是die
,以避免替换您不想要的地方,如果您在句子中使用死亡或其他内容
答案 5 :(得分:0)
更好的是,使用这样的东西:
if($_SERVER['SERVER_NAME'] != "dev.mydomain.com"){
ini_set("display_errors",0);
ini_set("log_errors", 1);
}
它可以帮助您记住在将错误上传到生产服务器时禁用错误。