MySQL LIKE通过PHP,PDO从多个字段中搜索

时间:2017-09-23 01:15:15

标签: php mysql pdo

我有MySQL表,其中包含文件名和说明字段。 然后,我写了这个代码做LIKE搜索。 但是,我糟糕的代码无法执行我想要做的事情。

错误消息说

  

语法错误或访问冲突。

PHP 7.0 / MySQL 5.0.95是我的服务器。

$keywords = str_replace( "\xc2\xa0", " ", $keywords );
$keywords = preg_replace("/[\s]+/", " ", trim($keywords));
$keywordsarray = array_unique(explode(' ', $keywords));
$sql1 = "SELECT * FROM file_table WHERE ";

$sql2 = array();
$key = array();
foreach ($keywordsarray as $word) {
$sql2[] = " (filename LIKE ? OR describe LIKE ? )";
$key[] = '%'.$word.'%';
$key[] = '%'.$word.'%';
}
$builtsql = $sql1.implode(' AND ', $sql2);
$query = $db->prepare($builtsql);
$query->execute($key);
你能给我好主意吗?感谢。

1 个答案:

答案 0 :(得分:1)

问题是由于未在您的查询中转义reserved word describe而引起的。

您应该能够通过将列名包装在identifier quotes(反引号)中来解决语法错误问题。

$sql2[] = " (`filename` LIKE ? OR `describe` LIKE ? )";