当前位置: 首页 > 面试题库 >

使用PDO匹配数据库中的行时出现问题

满才
2023-03-14
问题内容

我希望获取行数以检查数据库中是否已存在相同的电子邮件。我尝试了几种机制,但没有成功。当我直接在数据库中运行查询时,它给了我行数,但是通过PDO执行它给了我0。

我已经使用了fetchAll方法来手动计数,甚至使用了行数方法也无法正常工作

  $sql = 'SELECT count(*) FROM inbox WHERE uid = "'.$email_number.'" AND from_email = "'.$email_f.'"'; 
  $result = $link->prepare($sql); 
  $result->execute(); 
  $number_of_rows = $result->fetchColumn();

这个$ email_f的问题是它包含html

SELECT count(*) FROM inbox WHERE uid = "6961" 
AND from_email = "abc Offers <abc@abcs.com>"

这是我从$ sql打印的查询,当我在phpmyadmin中直接在数据库中执行它时,它工作正常。给我3的数量,但通过执行我得到0。


问题答案:

输入数据(或数据库)中很可能存在一些已转换或不可打印的字符。例如,可能存在换行符或特殊编码的符号,或某些字符(例如<>转换为HTML实体)。结果,查询包含<abc@abcs.com>将永远不会匹配text
&lt;abc@abcs.com&gt;

问题是,这只是一个猜测,没有人能告诉您实际的问题是什么,因为它是 您的 数据库您的 输入数据,只有 才能找到问题。

我写了一篇文章,解释了如何调试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();


 类似资料:
  • 如果我没有使用spring构建图形,那么是否可以使用spring框架完全访问我的neo4j图形?我正在尝试一些示例,但它似乎无法正常工作,因为spring创建的某些元数据不存在。 编辑:例如,我有这个错误当我试图通过它的id访问一个节点时,即

  • 我正在构建一个Django应用程序,它有几个应用程序。使用SQLite数据库作为后端运行良好。当我试图使用“manage.py migrate”将后端迁移到Oracle时,我发现了以下错误 django.db.utils.DatabaseError:ORA-01950:对表空间“XXXXXX”没有权限 当我在数据库中检查我的用户权限时,它有创建表、视图等的权限。我尝试执行“manage.py sq

  • 我使用NestJS与TypeOrm连接在MySQL,但返回一个错误:'没有存储库的"用户"被发现。看起来这个实体没有注册在当前的“默认”连接中?' 没有TypeOrm,我可以运行服务器。 “用户”是我的实体。 app.module 使用者单元 user.entity 谁能告诉我怎么了? 谢谢你的帮助!

  • 我正在创建一个JavaFX应用程序,我已经很好地连接到了数据库。然而,当我从表中获取数据时,我得到了一个错误 组织。h2.jdbc。JdbcSQLException:未找到表“touch”;SQL语句:从讲座[42102-192]中选择名称 我100%确定我连接到数据库并且表肯定在那里,对为什么会这样有任何建议吗? hear是我的连接代码和我正在运行的代码,以便您可以看到 和正在运行的查询

  • 我运行下面的脚本时出错,我不知道如何更正它。本质上,我在mysql中有一个名为gamestbl的表。我希望用户输入一些关于游戏名称或游戏描述的关键词,然后php将正确的游戏显示为下拉列表(理想情况下)甚至信息表。 错误显示: 警告:mysqli_query()至少需要2个参数,其中1个参数在第29行的C:\xampp\htdocs\introductiongphp\Email.php中给出 警告:

  • 我在运行数据流作业时得到以下错误。我正试图将现有的beam版本更新到2.11.0,但在运行时出现了以下错误。 java.lang.incompatibleClassChangeError:类org.apache.beam.model.pipeline.v1.runnerAPI$standardpTransforms$Primitives没有实现在org.apache.beam.runners.co