我正在尝试运行查询以查找给定搜索词是否与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]:参数号无效: 绑定变量的数量与...中的令牌数量不匹配。
答案 0 :(得分:4)
每个占位符都需要一个术语。由于您有三组占位符,因此您应该将这些术语绑定三次。
$stmt->execute(array_merge($search_terms, $search_terms, $search_terms));