使用PHP在MySQL中进行多字搜索

时间:2017-02-20 18:23:04

标签: php mysql regex preg-match-all

我正在尝试使用文本框中的多个单词进行搜索,但我无法修复它。以下代码无效,但适用于搜索.replaceWith()

请参阅,如果您可以帮助我解决任何问题!

/_cluster/reroute

2 个答案:

答案 0 :(得分:2)

您正在尝试将数组转换为字符串。 explode返回一个数组。尝试改为

$search = $_POST['search'];
$search = trim($search);
$search = preg_replace('/\s+/', ' ', $kerko);
$keywords = explode(" ", $kerko);

$query = "SELECT * FROM weblinks WHERE ";
foreach ($keywords as $keyword) {
    $query .= " post LIKE '%$keyword%' OR";
}
$query = rtrim($query, 'OR');

$sql = $conn->prepare($query);    

$sql->execute();
while($row = $sql->fetch(PDO::FETCH_ASSOC)){    
?>

答案 1 :(得分:1)

您必须将字符串传递给todays_table函数。

另外,为确保帖子中包含每个字词,例如“LIKE”,您必须在所需字词的开头添加“ + ”符号。

MATCH AGAINST

然后是SQL查询:

$search = $_POST['search'];
$search = trim($search);
$search = preg_replace('/\s+/', ' ', $kerko);
$keywords = explode(" ", $kerko); // create array of keywords

// here we build the string to require all keywords
$keywds_str = "+" . implode(" +", $keywords);

请注意字符串连接。在您的示例中,查询必须从字面上查找“$ keywords”。

最后一点,启用php错误报告以了解代码中的错误。空白页面对您没什么帮助。

希望它有所帮助,祝你好运。

编辑:

自错误信息:

  

致命错误:带有消息'SQLSTATE [HY000]的未捕获异常'PDOException':常规错误:

     

1191在C:\ xampp \ htdocs \ scraping \ result.php中找不到与列列表匹配的FULLTEXT索引:82

     

堆栈跟踪:#0 C:\ xampp \ htdocs \ scraping \ result.php(82):PDOStatement-> execute()#1 {main}

     

在第82行的C:\ xampp \ htdocs \ scraping \ result.php中抛出

您必须按$sql = $conn->prepare("SELECT * FROM weblinks WHERE MATCH(post) AGAINST ('".$keywds_str."')"); 索引表格列并启用该表格上的FULLTEXT

KEYS