【发布时间】:2012-10-05 12:32:12
【问题描述】:
可能重复:
Retrieve (or simulate) full query from PDO prepared statement
Get Last Executed Query in PHP PDO
PDO Debugging - View Query AFTER Bind?
使用PDOException 类,我可以获得与SQL 错误相关的各种信息。缺少的一部分是导致错误的实际 SQL 查询。这有助于解决完整性约束违规错误。即使带有插入参数的完整查询不可用,准备好的查询以及execute() 传递的数组就足够了,因为我可以重新创建完整的查询。请注意,我目前不使用 bindParam(),而是使用 execute() 传递所有数据。
如何查看导致错误的实际查询?谢谢
错误:
SQLSTATE[23000]:违反完整性约束:1452 无法添加或 更新子行:外键约束失败 (
website/accounts, 约束fk_accounts_zipcodes1外键 (zipcodes_id) 参考文献zipcodes(id) 删除 无操作 更新无操作)
文件名: /var/www/main/components/com_upload/models/contacts.php线路:520
错误时间:2012 年 10 月 15 日星期一,太平洋夏令时间 7:11:49
导致错误的SQL:
INSERT INTO 帐户(id、sites_id、姓名、地址、city_id、 zipcodes_id、电话、传真、date_created、date_modified、record_status、 vertical_markets_id,priority_id,roles_id) VALUES (:id,123,:name,:address,:cities_id,:zipcodes_id,:phone,:fax,NOW(),NOW(), "活跃" ,:vertical_markets_id,:priority_id,:roles_id)
【问题讨论】:
-
请显示您的代码和错误
-
@Cfreak 查看编辑后的代码。
-
@Matt 和 Zlatan。 Matt 推荐的线程指出可以通过扩展 PDOStatement。另一方面,Zlatan 的帖子指出这是不可能的,必须按照 Dainis 的建议使用 mysql 日志。