当前位置: 首页 > 知识库问答 >
问题:

mysqli或者死,它必须死吗?

徐正雅
2023-03-14

如果我使用这样的代码:

$update_result = mysqli_query( $link , $sql_update_login ) or die ('Unable to execute query. '. mysqli_error($link));

它必须死还是你可以在之后提出不同的查询?比如一个预定的函数,它将错误的日志写入另一个表?如:

$update_result = mysqli_query( $link , $sql_update_login ) or function('$query, $error);

或者之后还有什么选项?留档里没找到,有线索不胜感激。

共有3个答案

楚瑞
2023-03-14

是的,您可以在(或)之后提供不同的功能。我已测试了以下各项:

mysqli_query($sel_db,'what!') or some_func(mysqli_error($sel_db));

function some_func($str) {
    die("ERROR: ".$str);
}
燕英逸
2023-03-14

只是一个操作符(非常类似于|)。

或die()语法之所以有效,是因为短路,这意味着如果第一条语句为true,true或X将始终为true,因此不会计算X,脚本也不会死亡。

卢俭
2023-03-14

它必须死吗

恰恰相反,它永远不应该或死()。非常糟糕的遗传。和或die()

  • die抛出一条错误消息,向潜在的攻击者透露一些系统内部信息
  • 这会让无辜的用户对奇怪的信息感到困惑,并让他们无法使用界面,因此他们很可能会退出。
  • 它杀死了中间的脚本,因此它可能会导致被破坏的设计(或者根本没有设计)(即用户请求的页面的不完整渲染)。
  • 无法恢复地删除脚本。而抛出的异常可以被捕获并优雅地处理
  • die()。而在一个相对较大的应用程序中,这将是一个相当痛苦的发现

因此,千万不要对MySQL错误使用die(),即使是临时调试:有更好的方法。

不必手动检查错误,只需将mysqli配置为在出现错误时抛出异常,方法是在连接代码中添加以下行

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

在这之后,只需按原样编写每个mysqli命令,而不使用任何或die或其他任何东西:

$result = mysqli_query($link, $sql);

这段代码在出现错误时会抛出异常,因此,您将始终被告知每个问题,而不需要一行额外的代码。

关于如何使错误报告生产就绪、统一和整体合理,同时使代码更加干净,您可以在我关于PHP错误报告的文章中找到更详细的解释。

 类似资料:
  • 问题内容: 如果我使用如下代码: 它会死掉还是可以在之后提出其他查询?像将错误日志记录到另一个表的预定函数一样?如: “或”之后还有哪些其他选择?我没有在文档中找到它,任何线索都值得赞赏。 问题答案: 它必须死吗 恰恰相反, 它永远都不会。 PHP是一种不良遗传的语言。遗传很差。和错误消息是最差的雏形之一: 死掉会抛出错误消息,向潜在的攻击者透露一些系统内部信息 这会给无辜的用户带来奇怪的消息,并

  • 问题内容: 我有一个简单的用户登录/注册系统 我最近看了一个关于交和,不知道,我本来应该使用这些。据我了解,它们使PHP终止了吗?那是对的吗?我可以解决此问题的最好方法是,直接在everHeader()之后直接添加这些函数之一;我有死刑吗? 我有AJAX,jQuery通过我的login.php / register.php阅读,这会以任何方式受到影响吗? 编辑:除了header()之后,我还应该在

  • 死锁概念 死锁(Deadlock)就是一个进程拿着资源A请求资源B,另一个进程拿着资源B请求资源A,双方都不释放自己的资源,导致两个进程都进行不下去。 示例程序 我们可以写代码模拟进程死锁的例子。 package main func main() { ch := make(chan int) <-ch } 运行结果 root@fa13d0439d7a:/go/src# go run de

  • 我们已经实现了延迟消息处理,有2个队列和x-死信-交换/x-消息-ttl,在queue1中的消息超时后,它将转到queue2。 现在是否有可能设置RabbitMQ,以便如果在处理来自queue2的消息时,我们将其拒绝为“死信”,那么它将自动转到queue3?我担心的是queue2中的消息已经标记为“已死”,有没有办法区分那些因为被拒绝而死的消息,并自动只将那些放在队列3中?

  • 主要内容:死锁避免,死锁检测,等待图,死锁预防,等待模式,创伤等待模式死锁是两个或多个事务无限期地等待彼此放弃锁定的情况。 死锁被认为是DBMS中最令人恐惧的并发症之一,因为任务都没有完成,并且永远处于等待状态。 例如: 在表中,事务T1对某些行进行锁定,需要更新表中的某些行。 同时,事务T2在等级表中的某些行上保持锁定,并且需要更新事务T1持有的表中的行。 现在,出现了问题。事务T1正在等待T2释放其锁定,同样,事务T2正在等待T1释放其锁定。 所有活动都陷入停顿

  • 原因: 竞争资源 程序推进顺序不当 必要条件: 互斥条件 请求和保持条件 不剥夺条件 环路等待条件 处理死锁基本方法: 预防死锁(摒弃除1以外的条件) 避免死锁(银行家算法) 检测死锁(资源分配图) 解除死锁 剥夺资源 撤销进程 死锁概念处理策略详细介绍:https://wizardforcel.gitbooks.io/wangdaokaoyan-os/content/10.html