Stu*_*ork 12 php mysql debugging pdo
可能重复:
从PDO预处理语句中检索(或模拟)完整查询
我无法弄清楚为什么我的查询返回0行..它实现了一些非常动态的搜索功能,以及很多if/loop语句等等.为了调试它,我想确切地看到正在发送什么字符串到服务器.有没有办法通过PHP做到这一点?
有没有办法让服务器询问"最后一个查询是什么",或者告诉PDO"告诉我你发送了什么"?
我看到一个响应使用str_replace
手动输入值代替:fieldValue
,但它可能是一个语法问题(或者它可能是一个不正确的循环等),这种方法没有帮助.
使用bindValue(":fieldValue", $value);
if如果有所作为.
编辑
事实证明if ($var="true") { ...
这应该是一个简单的事情if ($var=="true") { ...
.我认为PHP在这个意义上与Java不一样吗?无论哪种方式,问题仍然存在(因为我经常遇到这个问题).我不得不使用一系列echo "You are Here";
来查找此错误,因为它在技术上有效但不正确.如果我有最后的SQL语句,我可以看到"哦,我的代码添加了where column = true
,必须经历错误的IF ...".
这是关于 SQL 调试的最常见的误解。“我需要在准备后查看查询才能判断是否发生了错误”。事实是,你不知道,我会告诉你原因。
一旦准备好查询,占位符就可以被视为有效的字符串/整数。你不在乎里面有什么。
另外,如果您正确设置 PDO,您将获得详细PDOException
说明所遇到的错误以及错误发生位置的完整回溯,此外,您还可以从 MySQL 获得错误字符串,这使得语法错误很容易找到。
要启用 PDO 异常并禁用模拟准备:
$pdo = new PDO("mysql:host=localhost;dbname=database_name", "user", "password");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10915 次 |
最近记录: |