0

可能重复:
从 PDO 准备语句中检索(或模拟)完整查询
在 PHP PDO PDO 调试中获取上次执行的查询
- 绑定后查看查询?

使用PDOException该类,我可以获得与 SQL 错误相关的各种信息。缺少的一部分是导致错误的实际 SQL 查询。这有助于解决完整性约束违规错误。即使带有插入参数的完整查询不可用,准备好的查询以及传递的数组execute()就足够了,因为我可以重新创建完整的查询。请注意,我目前不使用 bindParam(),而是使用execute().

如何查看导致错误的实际查询?谢谢

错误:

SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败(website/accounts,CONSTRAINT fk_accounts_zipcodes1FOREIGN KEY(zipcodes_id)REFERENCES zipcodesid)ON DELETE NO ACTION ON UPDATE NO ACTION)
文件名:/var/www/ main/components/com_upload/models/contacts.phpLine:520
错误时间:2012 年 10 月 15 日星期一,太平洋夏令时间 7:11:49

导致错误的SQL:

插入帐户(id、sites_id、姓名、地址、city_id、zipcodes_id、电话、传真、date_created、date_modified、record_status、vertical_markets_id、priority_id、roles_id)值(:id、123、:name、:address、:cities_id、:zipcodes_id ,:电话,:传真,NOW(),NOW(), "活动",:vertical_markets_id,:priority_id,:roles_id)

4

1 回答 1

1

确保您获得实际查询的最简单方法是激活mysql日志并查看您获得的输出。

Windows上,这可以通过在my.ini文件中添加两行来完成:

general_log = 1
general_log_file = "C:\path\to\log\mysql.log"

Linux 上,您需要修改my.cnf文件:

general_log = 1
general_log_file = /path/to/log/mysql.log
于 2012-10-15T14:04:00.363 回答