首页 / 知识
我可以使用 PHP 检测和处理 MySQL 警告吗?
2023-04-14 10:25:00

Can I detect and handle MySQL Warnings with PHP?我正在处理一个将 JobName 列定义为 UNIQUE 的 MySQL 表。如果有人尝试使用数据库中已有的 JobName 将新 Job 保存到数据库,MySQL 会抛出警告。 我希望能够在我的 PHP 脚本中检测到这个警告,就像一个错误一样,并适当地处理它。理想情况下,我想知道 MySQL 抛出了什么样的警告,以便我可以分支代码来处理它。 这可能吗?如果不是,是因为MySQL没有这个能力,PHP没有这个能力,还是两者都有? 对于 PHP 本身"标记"的警告需要更改 mysql/mysqli 驱动程序,这显然超出了这个问题的范围。相反,您将不得不基本上检查您对数据库进行的每个查询是否有警告:
显然,这将非常昂贵地应用 en-mass,因此您可能需要仔细考虑何时以及如何出现警告(这可能会导致您重构以消除它们)。 供参考,MySQL SHOW WARNINGS 当然,您可以省去 首先,您应该关闭警告,这样您的访问者就不会看到您的 MySQL 错误。其次,当你调用 看起来这是您要查找的错误号:
可能就是你要找的。 然后可以使用自定义 PHP 错误处理程序来处理 PHP 错误,但您也可以关闭显示 php 错误,因为它们通常会记录到日志文件中(取决于您的 php 配置)。 关于抑制警告的注意事项:通常,阻止显示警告不是一个好主意,因为您可能会遗漏一些重要的东西。如果您出于某种原因绝对必须隐藏警告,您可以通过在语句前面放置 示例:
可以得到警告,而且使用 mysqli 比使用 mysql 更有效。 这里是 php.net 手册页上为属性 mysqli-warning_count 建议的代码:
您可以使用 mysqli 语句错误号检测唯一键违规。 mysqli 语句返回错误 1062,即 ER_DUP_ENTRY。您可以查找错误 1062 并打印合适的错误消息。如果您还想打印列 (jobName) 作为错误消息的一部分,那么您应该解析语句错误字符串。
根据您正在使用的(如果有的话)框架,我建议您自己进行查询以检查作业名称,并为用户创建适当的信息以及表单的其余验证。 根据作业名称的数量,您可以将名称发送到包含表单的视图,并使用 javascript 告诉使用哪个被占用。 如果这对您没有意义,那么总结一下我的观点是:不要设计您的程序和/或用户来尝试做非法的事情并在他们这样做时捕获错误并随后处理它。恕我直言,将系统设计为不产生错误要好得多。将错误保留为实际错误 :) 已更新以删除有关 errno 函数的内容,我现在意识到这些内容不适用于您的情况... MySQL 中对于 所以我想也不能依赖使用 |
最新内容
相关内容
linux命令下写脚本?
linux命令下写脚本?,服务,系统,环境,代码,名称,命令,脚本,发行,在线,情况,三个简单Linux的shell脚本程序编写Shell编程实战 实现文件备份 文件linux把命令变成脚本?
linux把命令变成脚本?,系统,环境,工作,脚本,命令,信息,基础,代码,文件,变量,如何编写简单的Shell脚本文件之Linux的基本操作1、在开始Shell编linux数据库查找命令?
linux数据库查找命令?,位置,名称,状态,服务,软件,信息,系统,命令,名字,密码,在linux中如何用命令查找文件在哪使用查找命令 “find”命令允许脚本调用linux命令?
脚本调用linux命令?,代码,系统,工作,底部,脚本,位置,环境,行用,官网,标准,typescript脚本中怎样运行Linux命令?1、Script可用于记录当前用户的linux检测硬件的命令?
linux检测硬件的命令?,信息,系统,检测,工具,第一,数据,设备,分析,实时,百度,如何查看linux系统CPU信息cpu信息记录在/proc/cpuinfo中。linux怎linux数据库同步命令?
linux数据库同步命令?,信息,系统,汽车,车辆,服务,工作,通信,一致,分析,数据,DB2数据库在linux操作系统的指令有哪些?1、linux系统常用操作命令linux脚本命令输信息?
linux脚本命令输信息?,系统,信息,代码,脚本,数据,工具,发行,命令,变量,文件,linux下shell脚本命令shell变量调出命令。linux中的shell脚本有多linux上启动脚本命令?
linux上启动脚本命令?,服务,状态,系统,代码,脚本,工作,周期性,命令,文件,方法,Python脚本在Linux下如何自启动与定时任务的实例详解Linux在启linux命令超时检测?
linux命令超时检测?,时间,网络,检测,系统,地址,状态,电脑,代码,软件,设备,linux定时器超时次数过多之后,再也收不到信号当时钟脉冲到来时,将目linux建立数据库命令?
linux建立数据库命令?,软件,系统,工作,数据,密码,工具,数据库,一致,网络,服务,linux中在shell中怎么创建一个数据库1、以下的文章主要讲述的是linux命令进数据库?
linux命令进数据库?,地址,系统,名字,服务,密码,命令,读法,数据库,操作系统,主机,linux系统mysql数据库怎么进入数据库首先确保linux下mysql安linux下编写脚本命令?
linux下编写脚本命令?,代码,时间,工具,标准,系统,实战,平台,最新,网站,文件,linux写脚本,需要ls只显示前10个文件,怎么实现?在linux中如果用ls