如何从 PHP PDO 接收 MYSQL 警告(例如 #1264 Out of Range)
How to receive MYSQL warnings (E.g. #1264 Out of Range) from PHP PDO
当我使用 PHP PDO 时,我注意到我可以将 ERROR MODE 更改为 Exceptions。
但是如果我还需要知道 MYSQL 警告怎么办。
示例:
update <table> SET number = 99999999999
当 number 是 int(11) 时, 应该导致 MYSQL 抛出以下警告
Warning: #1264 Out of range value for column 'number' at row 1
为了使我的数据在应用程序和 MYSQL 之间保持一致,我想捕获它
一种可能的解决方法是通过 PHP 验证输入。但这不是我要找的。
提前谢谢你,
奥莱
感谢 Vicky,
可能的解决方案是在 "SHOW WARNINGS"
上执行 MYSQL 查询
示例:
$warnings = $this->PDO->query("SHOW WARNINGS")->fetchObject();
// example output of $warnings OR NULL
// stdClass Object
// (
// [Level] => Warning
// [Code] => 1264
// [Message] => Out of range value for column 'qty' at row 1
// }
当我使用 PHP PDO 时,我注意到我可以将 ERROR MODE 更改为 Exceptions。
但是如果我还需要知道 MYSQL 警告怎么办。
示例:
update <table> SET number = 99999999999
当 number 是 int(11) 时,应该导致 MYSQL 抛出以下警告
Warning: #1264 Out of range value for column 'number' at row 1
为了使我的数据在应用程序和 MYSQL 之间保持一致,我想捕获它
一种可能的解决方法是通过 PHP 验证输入。但这不是我要找的。
提前谢谢你, 奥莱
感谢 Vicky,
可能的解决方案是在 "SHOW WARNINGS"
上执行 MYSQL 查询示例:
$warnings = $this->PDO->query("SHOW WARNINGS")->fetchObject();
// example output of $warnings OR NULL
// stdClass Object
// (
// [Level] => Warning
// [Code] => 1264
// [Message] => Out of range value for column 'qty' at row 1
// }