PDO查找数组值与多个列值匹配的位置

时间:2017-11-21 14:07:50

标签: php mysql pdo prepared-statement

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

$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]:参数号无效:       绑定变量的数量与...中的令牌数量不匹配。

1 个答案:

答案 0 :(得分:4)

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

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