gpt4 book ai didi

php - 从 PDO 准备好的语句中获取 SQL 查询和参数

转载 作者:行者123 更新时间:2023-11-29 14:14:30 24 4
gpt4 key购买 nike

Possible Duplicate:
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]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (website/accounts, CONSTRAINT fk_accounts_zipcodes1 FOREIGN KEY (zipcodes_id) REFERENCES zipcodes (id) ON DELETE NO ACTION ON UPDATE NO ACTION)
File Name: /var/www/main/components/com_upload/models/contacts.phpLine: 520
Time of Error: Monday October 15, 2012, 7:11:49 PDT

导致错误的SQL:

INSERT INTO accounts (id, sites_id, name, address, cities_id, zipcodes_id, phone, fax, 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)

最佳答案

确保获得实际查询的最简单方法是激活 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

关于php - 从 PDO 准备好的语句中获取 SQL 查询和参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12897240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com