可能重复:
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
,CONSTRAINTfk_accounts_zipcodes1
FOREIGN KEY (zipcodes_id
)引用zipcodes
(id
)ON DELETE NO ACTION ON 更新无行动)
文件名: /var/www/main/components/com_upload/models/contacts.phpLine:520
时间错误:2012年10月15日星期一,太平洋时间7:11:49
导致错误的SQL:
INSERT INTO帐户(id,sites_id,name,address,cities_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(), “active”,:vertical_markets_id,:priority_id,:roles_id)
答案 0 :(得分: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