【问题标题】:mysql: signal sqlstate to phpmysql:向 php 发送 sqlstate 信号
【发布时间】:2015-11-16 22:57:39
【问题描述】:

大家好,我正在开发一个 php-mysql 应用程序。 mysql 数据库使用触发器来强制执行各种约束。 假设有一个表只有两列(ID 和值),并且触发器防止插入负值。 创建 TEABLE my_tbl ( id INT(9) AUTO_INCREMENT 主键, 值 INT(9) ) 触发器看起来像这样: 创建触发器my_trigger 在插入之前my_tbl 每一行 开始 IF NEW.value

有几个触发器,每个触发器都有这行代码: SIGNAL sqlstate '45000' SET message_text = '值必须为正'; 唯一改变的是 message_text,它取决于违反的约束。如果你是我的mysql控制台输入日期触发器“显示”我这个描述但是当我使用php界面时它只是不添加数据并且不返回任何错误,所以用户没有任何线索数据尚未插入。 我的问题:有什么方法可以在 php 生成的页面上显示 message_text 吗? 我使用了搜索功能,但我发现的每个解决方案都使用 PDO 和/或面向对象的 php,而我想坚持使用 procedural php 和 mysql

【问题讨论】:

  • 感谢您的快速回答,但我已经找到了该函数,如果我理解正确,它将返回标识错误的五个字符代码,因此在 m 示例中(我无法正确显示格式化,对不起^^) 它会返回 '45000' 而我需要 'value must be positive'
  • 我的错,我没有滚动到那个页面的底部,你是对的。
  • @DeDee 你找到这个问题的解决方案了吗?在 PHP 中读取 MESSAGE_TEXT?
  • @RehbanKhatri 恐怕不,我没有在看,但如果我必须这样做,我会在 45000 - 450FF 范围内摆弄,并在 SQL 和 PHP 中创建相同的错误消息,所以两者二进制文件会知道这个数字的含义。我知道自定义错误只推荐 45000,但我怀疑他们不会保留更宽的空间,即 45000 - 4500F 或 45000 - 450FF。

标签: php mysql


【解决方案1】:

我使用mysqli_error函数解决了这个问题,它返回最后的错误信息。

【讨论】:

  • 这对我不起作用。它显示最近的错误,但不是我在 message_text 中给出的错误
猜你喜欢
  • 2019-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
相关资源
最近更新 更多