它必须死吗

恰恰相反,它die()永远都不会。 PHP是一种不良遗传的语言。遗传很差。和or die()错误消息是最差的雏形之一:

死掉会抛出错误消息,向潜在的攻击者透露一些系统内部信息 这会给无辜的用户带来奇怪的消息,并使他们无法使用任何界面,因此他们很可能会退出。 它会杀死中间的脚本,因此可能导致显示的设计破损(或根本没有设计)(即,用户请求的页面渲染不完整) 不可挽回地杀死脚本。引发异常时可以捕获并正常处理 die()没有提示您发生错误的位置。在相对较大的应用程序中,要找到它会很麻烦。 因此,即使是进行临时调试die(),也切勿使用mysql错误:有更好的方法。

对于您的查询,您只有2个选择:

如果您打算mysqli_query()在您的应用程序代码中使用所有方法(这是错误的,但是在StackOverflow上您将永远不会被其他任何方式使用),则可以使用trigger_error()而不是die。它将引发传统的PHP错误,并将根据PHP设置自动记录。

$result = mysqli_query($link , $sql) or trigger_error($link->error."[ $sql]"); 如果要mysqli_query()用作抽象库的一部分,则必须抛出新的Exception,因为您将需要一些堆栈跟踪(始终随异常一起提供)以了解发生此错误的位置。

但是,您不能new Exception与OR运算符一起使用。因此,代码变得更长一些:

$result = mysqli_query($link , $sql); if (!$result) { throw new Exception(mysqli_error($link)."[ $sql]"); } 没什么大不了的,因为您只需编写一次即可。

更新。事实证明,mysqli能够自行抛出异常,这可以使我们免于手动编写处理代码:

$result = mysqli_query($link, $sql); 如果发生错误,此代码将引发异常,因此,您将始终获得通知,而无需额外的代码。但是,在前面的示例中,我们将SQL查询添加到错误消息中,这可能非常有价值-因此,人们也可以坚持上述方法。

重要提示

预定功能,将错误日志写入另一个表?

这显然是一个坏主意。特别是如果您要将错误消息写入先前尝试失败的同一介质。 错误必须记录到最可靠的介质中-纯文本日志。因此,只需设置您的PHP即可编写错误日志并定期检查它们。来源:stack overflow

php 同或,php同或运算相关推荐

  1. 不占用多余空间实现值的交换——异或运算

    首先什么是异或运算? ^规则: 0 ^ x = x x ^ x = 0 那么 a 与 b 交换值如何做呢???三行代码

  2. python 位运算与等号_Python 运算符

    和大多数语言一样,Python也有很多运算符,并且运算符跟其他语言的运算符大同小异接下来一一介绍: 算术运算符: 运算符描述实例 +加 - 两个对象相加a+b的输出结果是30 -减 - 得到复数或者一 ...

  3. C++ OJ 中多行数据输入(大小写转换、通过移位运算实现2的n次方、多组输入,每行输入数量不一样)

    1. 多组输入,输出每行最大值 while(cin>>a>>b) 主要解决的是两个为一组的多组数据输入,当一次只输入一个数据时就用 while(cin>>a) 输入 ...

  4. OpenCV 笔记(06)— Mat 结构、像素值存储方法、创建 Mat 对象各种方法、Mat 对象的运算

    数字图像中的每个点都称为像素(对于图像元素),并且每个像素可以存储一个或多个值,这取决于它是否是仅存储一个值的黑白图像(也称为二进制图像,比如只存储0或1),还是存储两个值的灰度图像,或者是存储三个值 ...

  5. NumPy — 创建全零、全1、空、arange 数组,array 对象类型,astype 转换数据类型,数组和标量以及数组之间的运算,NumPy 数组共享内存

    NumPy 简介 一个用 python 实现的科学计算包.包括: 1.一个强大的 N 维数组对象 Array : 2.比较成熟的(广播)函数库: 3.用于整合 C/C++ 和 Fortran 代码的工 ...

  6. 矩阵的卷积核运算(一个简单小例子的讲解)深度学习

    卷积运算:假设有一个卷积核h,就一般为3*3的矩阵: 有一个待处理矩阵A: h*A的计算过程分为三步 第一步,将卷积核翻转180°,也就是成为了 第二步,将卷积核h的中心对准x的第一个元素,然后对应元 ...

  7. 3D Cube计算引擎加速运算

    3D Cube计算引擎加速运算 华为达芬奇架构的AI芯片Ascend910,同时与之配套的新一代AI开源计算框架MindSpore. 为什么要做达芬奇架构? AI将作为一项通用技术极大地提高生产力,改 ...

  8. 计算机组成原理-第二章 数据表示与运算

    计算机组成原理-第二章 数据表示与运算 一.数据的表示 1.数值型数据的表示(重点难点) 1.1数值型数据的表示--进位制 1.2数值型数据表示-码制 1.3数值型数据的表示--定点数 1.4数值型数 ...

  9. Java基础语法运算和控制符

    1 类型转换 在Java中,一些数据类型之间是可以相互转换的.分为两种情况:自动类型转换和强制类型转换. 1.1 隐式转换(理解) ​ 把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变 ...

  10. 在进行商业运算时解决BigDecimal的精度丢失问题

    System.out.println(0.05+0.01); System.out.println(1.0-0.42); System.out.println(4.015*100); System.o ...

最新文章

  1. 爬虫学习 pyspider和scrapy小结 / 与其他工具对比
  2. 图像拼接和图像融合技术
  3. request.getParameter如何获取radio的属性值
  4. shell 脚本逻辑判断
  5. [Js-开发常识]为什么定义实体类属性建议用 Ineger 而不是 int
  6. java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件
  7. ubuntu16.04安装gradle
  8. 【实战】Spring生成beanName冲突的解决之道:附源码分析
  9. MFC体系结构(3)
  10. 【毕业答辩】毕业设计答辩前期准备
  11. org.springframework.web.client.RestClientException: Could not extract response
  12. c++ 显示三维散点图_Matplotlib中的三维绘图
  13. 柠檬班软件测试002软件测试的定义
  14. 【高等数学笔记】格林公式、高斯公式、斯托克斯公式、场论
  15. SpringCloudAlibaba——Nacos实现原理详解
  16. ssb门限_判断(2分) 由于DSB信号的调制制度增益是SSB的两倍,所以抗噪声性能比SSB好一倍...
  17. 如何释放计算机内存吗,Win7如何释放内存?三招帮你将电脑中的垃圾全部清理掉!...
  18. 运维工程师面试题整理——》 IDC机房运维
  19. 编写Transact-SQL语句
  20. 解决iperf发包高丢包率的问题

热门文章

  1. 重型仓储货架|海格里斯解析如何选购重型托盘货架?
  2. Python——定义一个类来进行北京污染物的可视化(pyecharts绘制折线图、饼图、北京地图)
  3. 文件服务器个人文件,hfs网络文件服务器
  4. JavaScript 学习笔记 - 挂载事件 Demo
  5. 【网站部署】宝塔 | 一键部署网站、新手保姆级教程
  6. Vue实现锚点定位导航功能
  7. Q390FRB-Z15/Q390FRB-Z25/Q390FRB-Z35钢板
  8. HSL值,HSLA,文档流,盒子模型等问题。
  9. 使用fiddler进行抓包时无法上网的解决方法
  10. 为什么很多电商都不把合规当回事?