Php 一个捕获所有MySQL错误的函数?

Php 一个捕获所有MySQL错误的函数?,php,mysql,function,Php,Mysql,Function,是否有人拥有一个PHP函数,例如,如果由于mysql错误而发生mysql\u error(),它将不会输出该函数 不输出它,我的意思是它不会在现场显示错误,因为我会将它与我拥有的另一个函数一起使用,如果我有一个MySQL错误函数的话,它会起到很好的作用 我只是觉得现在这样做很烦人: $q = mysql_query("SELECT * FROM something"); // if error occurs if(!$q) { echo 'Error' . mysql_error();

是否有人拥有一个PHP函数,例如,如果由于mysql错误而发生
mysql\u error()
,它将不会输出该函数

不输出它,我的意思是它不会在现场显示错误,因为我会将它与我拥有的另一个函数一起使用,如果我有一个MySQL错误函数的话,它会起到很好的作用

我只是觉得现在这样做很烦人:

$q = mysql_query("SELECT * FROM something");

// if error occurs
if(!$q) {
   echo 'Error' . mysql_error();
} else {
  // else no errors so continue
}
在我的一些网页上,我看到一个脚本中有几个查询,我希望能够在我所有PHP代码的底部包含函数,如果我的脚本中任何地方出现MySQL错误,该函数将捕获错误,而不是执行我上面引用的代码的倍数


这样,我可以节省大量不必要的工作,并使用电子邮件错误函数实现它。

一种方法是编写自己的函数,比如sql\u query,它看起来像这样:

function sql_query($sql) {
    $q = mysql_query($sql);
    // if error occurs
    if(!$q) {
       //your error handling code
    } else {
       return $q;
    }
}
然后,您可以在任何需要执行sql查询的地方使用此函数


一种更好的方法是使用PDO和异常等。

一种方法是编写自己的函数,比如sql\u query,如下所示:

function sql_query($sql) {
    $q = mysql_query($sql);
    // if error occurs
    if(!$q) {
       //your error handling code
    } else {
       return $q;
    }
}
然后,您可以在任何需要执行sql查询的地方使用此函数


更好的方法是使用PDO和异常等。

创建或使用DB抽象层


使用异常并捕获所有异常。然后,您有一个“设置”来打开或关闭错误显示,或者更好的是,将它们记录到文件中。

创建或使用DB抽象层


使用异常并捕获所有异常。然后你有一个“设置”来打开或关闭错误显示,或者更好的是,将它们记录到文件中。

我想我不明白你需要什么

如果要在页面上打印“隐藏”错误,只需使用de'@'前缀:

$q=@mysql\u查询(“选择*FROM 某物)


有了“@”,最终用户将无法看到错误。

我想我不明白您需要什么

如果要在页面上打印“隐藏”错误,只需使用de'@'前缀:

$q=@mysql\u查询(“选择*FROM 某物)


使用“@”,错误将被最终用户抑制。

最可靠的解决方案可能是使用
trigger\u error()
。通过这种方式,您可以连接到PHP的错误处理系统,该系统已经准备好处理开发和生产环境

$querySql = 'SELECT * FROM `foo`';
$queryResult = mysql_query($querySql);

if (!$queryResult) {
    trigger_error('Unable to execute query: ' . $querySql, E_USER_NOTICE);
}

当然,最方便的方法是为自动触发错误的
mysql\u query()
创建一个装饰函数。干式原理始终适用。

最可靠的解决方案可能是使用
触发器错误()。通过这种方式,您可以连接到PHP的错误处理系统,该系统已经准备好处理开发和生产环境

$querySql = 'SELECT * FROM `foo`';
$queryResult = mysql_query($querySql);

if (!$queryResult) {
    trigger_error('Unable to execute query: ' . $querySql, E_USER_NOTICE);
}


当然,最方便的方法是为自动触发错误的
mysql\u query()
创建一个装饰函数。DRY原则始终适用。

我迫不及待地等待出现需要调试的数据库错误,因为页面正在加载,但没有数据……我怀疑代码是否会通过标记器-您缺少一个句点(用于连接字符串和
mysql\u error()
return)我只是在一秒钟内快速编写了代码,这不是我从我的一个网页上复制的实际代码,因此有两个打字错误,不用担心。我只是快速地键入了它,但为了让人们不必提及它,我已经对它进行了更正。我迫不及待地想知道您出现了需要调试的数据库错误,因为页面正在加载,但没有数据……我怀疑代码会通过标记器-您缺少了一个句点(用于连接字符串和
mysql\u error()
return)我只是在一秒钟内快速编写了代码,这不是我从我的一个网页上复制的实际代码,因此有两个打字错误,不用担心。我只是很快地把它打出来,但为了人们不必提及它,我已经纠正了它。应该避免错误抑制!您应该修复问题,而不是隐藏它。错误可能是由与查询本身无关的错误(如语法错误)引起的。另外,不在实时站点上显示它们也是应该做的事情,因为它可能会向攻击者泄露大量信息,因此我说要与我的电子邮件错误功能集成,这样我会收到确切错误的通知,但用户会收到您指定的错误。@PHPLOVER,@仍然是一种糟糕的处理方法。如上所述,使用异常并捕获它们,并将它们记录到文件中,以便访问者不会看到它们。应避免错误抑制!您应该修复问题,而不是隐藏它。错误可能是由与查询本身无关的错误(如语法错误)引起的。另外,不在实时站点上显示它们也是应该做的事情,因为它可能会向攻击者泄露大量信息,因此我说要与我的电子邮件错误功能集成,这样我会收到确切错误的通知,但用户会收到您指定的错误。@PHPLOVER,@仍然是一种糟糕的处理方法。如上所述,使用异常并捕获它们,并将它们记录到文件中,这样访问者就不会看到它们。嗨,E_USER_注意到这是什么?这对我来说是新的,而且我以前也从未听说过。感谢您对以上内容进行补充,它是否会显示错误消息,但不会显示有关数据库等信息的错误,这在现场网站上显然是好的,以避免提供有关查询等信息,还是我的想法是错误的?有人能在我的回答中回答上述问题吗?真的有兴趣知道吗?谢谢erisco,出于某种原因,我键入了它,但找不到任何能准确描述其含义的东西,我也在谷歌上搜索过,我只是不明白它们的确切含义。它似乎不太具有描述性。嗨,E_用户注意到这是什么?这对我来说是新的,而且我以前也从未听说过。感谢您添加到上面,它是否显示错误消息但显示错误