我定义了一个自定义错误处理程序,它捕获所有异常并将其保存到日志中。现在,如果我在mysqli查询中出现语法错误,例如打字错误,页面将完全停止加载。没有引发异常,因此不会触发错误处理程序,也不会记录任何内容。
这正常吗?我是否应该检查PHP设置来修复此问题,以便任何mysqli查询错误都会引发异常?
(如果查询返回0个结果,我不希望引发异常-仅当它由于键入错误或查询结构中的其他错误而出错时)
查询示例:
if($result=$db->query('SELECT bad_field_reference FROM table')){while($r=$result->fetch_assoc()){$data[]=$r;}}$result->free();
如果我尝试在PHPMyAdmin中执行此查询,它将告诉我列bad\u field\u引用不存在。如果我尝试将其作为PHP脚本的一部分执行,则整个页面将停止加载。
为了澄清这一点,我只是通过查看页面源代码进行了一些测试。显然页面的其余部分是加载的——但是,当启用java时,某些项目是隐藏的,然后我使用jquery以动画方式重新显示一些内容。这些jquery脚本没有运行,因此页面似乎已停止加载。
那么,现在有两个问题--如何让PHP捕获错误,以及如何让jQuery仍然运行它的脚本?
我想出了“锁定”部分的解决方案。在我的代码示例中,我有以下格式:
如果(--query--){--do something--}释放结果。
当查询在语法上是正确的时,这可以正常工作。但是,如果查询失败,则无法释放结果。这是什么是游移,并导致页面似乎没有加载。一旦我在括号内移动了“免费结果”,比如
如果(--query--){--do something--free result}
它工作正常,没有引起任何问题。如果查询错误,它仍然不会触发异常,但目前我正在通过在查询之后创建一个快速脚本来修复此问题,例如:
if($db->error){handle error}
这正常吗?
不
是否有一个PHP设置,我应该检查来修复这个问题,以便任何mysqli查询错误抛出异常?
对
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
然而,并非所有mysqli_*函数都会引发DB错误,其中一些函数会引发常规的PHP错误,比如free()
会,这一部分让我更加好奇:我也非常好奇,为什么只处理异常而不处理PHP错误。不要告诉我你有错误报告(0)
-你知道吗?如果是的话,我什么也说不出来。
最后,我怀疑你有原始的MySQL
您没有使用占位符来构建查询,这使得SQL注入不可避免
您必须使用一个抽象库,将所有重复的代码放入类方法中。看到你的查询运行安全MySQL:
$data = $db->getAll('SELECT bad_field_reference FROM table');
它不需要水平滚动来阅读它,它是安全的,简洁的,防错误的,并支持占位符!
问题内容: 我听说捕捞被认为是不好的作法。我当前正在加载一个不能保证在PATH上的.dll,并希望在不存在的情况下切换到用户配置的位置。 有更好的方法吗?还是在这里接受是可以接受的? 问题答案: 除了提供有关如何从技术上解决问题的建议以外,我想花点时间解释一下为什么它首先被认为是“不好的做法”。 让我们从澄清什么是类开始。 在Java中,将引发错误和异常(它们是主要类型)。通过使用关键字可以完成上
我正在开发一个django应用程序,它可以与几个Amazon Web服务进行通信。 到目前为止,我在处理和捕获boto3客户端抛出的异常方面遇到了困难。我正在做的事情似乎不必要地单调乏味: 例子: 如果令牌坏了,这可能会抛出一个。 可能会抛出一个。 首先,我在代码中的任何地方都找不到这些错误,所以它们可能是在某个地方生成的。一句话:我不能像往常一样导入和捕获它。 其次,我发现了一种方法来捕获错误这
我有以下代码: null 我做错了什么?当MySQL抛出有关查询的错误时,我如何捕获?
在节点中。在js服务器上,捕获SIGTERM和捕获SIGINT有什么区别吗? 我认为进程不应该能够防止SIGINT关闭? 我是否能够捕获两个信号并阻止退出?我的实验表明答案是肯定的,但从我所读到的内容来看,SIGINT总是假设关闭一个进程。 或者我把SIGINT和SIGKILL混淆了?也许SIGKILL是我无法恢复的信号? 捕捉这些信号当然可以让我优雅地关机: 我想我把SIGINT和SIGKILL
我的数据服务如下所示: 如果我得到一个HTTP错误(即404),我会从core得到一条令人讨厌的控制台消息:error error:Uncaught(promise):[object]。es5。在我的情况下,我该如何处理?
问题内容: 在Java中是否有捕捉到内存不足错误()的问题? 问题答案: 是的 。以下是一些可能有意义的示例: 如果您想通过 优雅地关闭 程序来处理它 如果要向用户显示问题或 记录错误 根据您的设计,您甚至可以清理内存并 恢复工作状态 但是 ,请注意,通常情况下(除非您处在一次要分配大量内存的位置),对于这些情况,您可能不会专门捕获OutOfMemoryError,而是始终在顶部进行操作主要入口点