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

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

最佳答案

每个占位符都需要一个术语。因为您有三组占位符,所以应该将术语绑定三次。

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

关于php - PDO查找数组值与多个列值匹配的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47415085/

10-12 13:46