【问题标题】:PDO to find where array values match multiple column valuesPDO 查找数组值与多列值匹配的位置
【发布时间】:2017-11-21 14:07:49
【问题描述】:

我正在尝试运行查询以查找给定搜索词是否与数据库中三列的任何值匹配。第一列返回正确的结果集(即机场国际民航组织代码列),但其他两列不返回任何内容。

$inQuery = join(",",array_fill(0,count($search_terms),"?"));

$stmt = $wacdbpdo->prepare("
                        SELECT
                        *
                        FROM airportdetails
                        WHERE airport_icao_code IN ($inQuery)
                        OR airport_iata_code IN ($inQuery)
                        OR airport_faa_code IN ($inQuery)
                        " );
$stmt->execute($search_terms);

但是我确实收到了这个错误。查询是否试图通过添加到 $inQuery 字符串值而不是返回到每列的字符串开头来读取?我该如何处理?有没有更好的方法来编写这个查询?我是 PDO 的新手,我想我可能是以完全错误的方式编写这个查询?任何帮助表示赞赏..

警告:PDOStatement::execute(): SQLSTATE[HY093]: 无效参数号: 绑定变量的数量与...中的标记数量不匹配

【问题讨论】:

  • 我认为这个错误是不言自明的
  • 您必须创建一个包含 3 个 search_terms 副本的数组。
  • @GrumpyCrouton 应该是这样的
  • @chris85 做到了!非常感谢,感谢您的帮助。我现在也可以看到我做错了什么。

标签: php mysql pdo prepared-statement


【解决方案1】:

每个占位符都需要一个术语。由于您有三组占位符,您应该将术语绑定三次。

$stmt->execute(array_merge($search_terms, $search_terms, $search_terms));

【讨论】:

    猜你喜欢
    • 2018-10-17
    • 1970-01-01
    • 2019-08-17
    • 2015-08-02
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    相关资源
    最近更新 更多