1 回答

TA贡献1852条经验 获得超7个赞
数据引起的问题
输入数据(或数据库)中很可能存在一些已转换或不可打印的字符。例如,可能有换行符或特殊编码的符号,或某些字符,例如<
转换>
为 HTML 实体。因此,查询 contains<abc@abcs.com>
永远不会匹配 text <abc@abcs.com>
。
问题是,这只是一个猜测,没有人能告诉你真正的问题是什么,因为它是你的数据库,你的输入数据,只有你能找到问题。
我写了一篇文章来解释如何调试您的 PDO 问题。
要调试特定问题,您需要
确保为 PDO 和 PHP 启用了完整的错误报告。它真的很有帮助,向您展示偶尔的印刷错误、拼写错误等
仔细检查数据库中的数据和输入以找出差异。
bin2hex()
函数将有所帮助,在数据库和输入中显示所有不可打印和转换的字符。
连接凭据引起的问题
另一个常见问题是当您有多个数据库并连接到没有请求数据的错误数据库时。这个问题与这个问题类似,所以只需遵循相同的程序,只检查数据行而不是表列表。
一个无关紧要但重要的说明
在旁注中,但非常重要的是:您准备好的声明是一个不保护任何东西的货物崇拜代码。它必须是这样的:
$sql = 'SELECT count(*) FROM inbox WHERE uid = ? AND from_email = ?';
$result = $link->prepare($sql);
$result->execute([$email_number,$email_f]);
$number_of_rows = $result->fetchColumn();
- 1 回答
- 0 关注
- 131 浏览
添加回答
举报