gpt4 book ai didi

php - 全局搜索字段搜索多列

转载 作者:行者123 更新时间:2023-11-28 23:45:10 25 4
gpt4 key购买 nike

我有一个 MySQL 表,其中包含以下列的车辆信息:

year (int)
model_name (varchar)
chassis (int)
engine (int)
body_type (text)

我有一个搜索框,我希望用户能够搜索特定模型,然后通过 AJAX 显示结果。一切都按预期工作,但有一个问题:它只显示与单个列匹配的结果。

例如,假设我在表中有以下行:

year: 1965
model_name: Mercedes 220SEb
chassis: 111.014
engine: 127.982
body_type: Sedan

现在,我可以通过搜索 1965Mercedes 220SEb 来显示它,但它不会通过搜索 1965 显示出来Mercedes 220SEb,这是我想要的。

这是查询(通过 AJAX/$.post 作为 $_POST['search'] 传递)

$like_search = '"%' . $_POST['search'] . '%"';
$sql = 'SELECT * FROM ac_models WHERE year LIKE ' . $like_search . ' OR model_name LIKE ' . $like_search . ' OR chassis LIKE ' . $like_search . ' OR engine LIKE ' . $like_search . ' OR body_type LIKE ' . $like_search . ' ORDER BY year ASC';

如何修改我的查询以匹配多个列

最佳答案

这应该做你想做的。我按每个空格展开搜索字符串,并在每个列中搜索每个部分。每个单词必须在任何列中。

$search = $_POST['search'];
if (preg_match('/[;"\']/', $search)) {
die('Possible SQL Injection');
}
// maybe strip . and , from numbers here
$sql_where = '';
foreach (explode(' ', $search) as $searchpart) {
$like_search = '%' . $searchpart . '%';
$sql_where .= ' AND (' .
'year LIKE ' . $like_search .
' OR model_name LIKE ' . $like_search .
' OR chassis LIKE ' . $like_search .
' OR engine LIKE ' . $like_search .
' OR body_type LIKE ' . $like_search .
')';
}
if ($sql_where == '') {
die('no search criteria given');
// to return everything: $sql_where = ' AND 1=1';
}
$sql_where = substr($sql_where, 5);
$sql = 'SELECT * FROM ac_models WHERE ' . $sql_where . ' ORDER BY year ASC';

关于php - 全局搜索字段搜索多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33741941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com