gpt4 book ai didi

PHP MYSQL 多个表搜索相同关键字

转载 作者:行者123 更新时间:2023-11-29 14:56:55 25 4
gpt4 key购买 nike

我尝试创建一个查询,该查询将使用一个关键字搜索四个不同的表,以获取该位置下列出的所有项目。

我有四张 table - 国家- 状态- 县- 城市

例如英国 -> 英格兰 -> 西米德兰兹 -> 伯明翰

当用户在西米德兰兹输入时,我不会看到所有项目,包括伯明翰、沃尔 Solr 、伍尔弗汉普顿下的项目

这是我想出来的

$location = $_POST['location'];
$city_sql = " SELECT * FROM city";

$city_result = $db->query( $city_sql );
$new_array=array();
$i=0;
while ($fetch_sql = $db->fetch_object($city_result) ){

if ( strcmp(soundex(strtolower($fetch_sql->name)), soundex(strtolower($location))) == 0 ) {
$new_array[$i]['name'] = $fetch_sql->name;
$new_array[$i]['code'] = $fetch_sql->name;
$i++;
}
}

$k=0;
for ( $j=0; $j < sizeof($new_array); $j++ ){
$i = similar_text(strtolower($new_array[$j]['name']), strtolower($db->escape_value($location)), &$similarity_pst);
if( $i > $k && $i > 7 ){
$k = $i;
$city_db_name = $new_array[$j]['name'];
$city_code = $new_array[$j]['code'];
}
}

如果您有任何想法,请告诉我。

PHP MYSQL 多表搜索相同关键字

最佳答案

您应该使用 SQL 功能来获取数据,而不是 PHP 的。

如果我理解正确的话,您想从多个表和多个列中获取数据。像这样更改您的查询:

SELECT
-- list of considered columns
col1,
col2,
col3
-- ...
FROM
City
JOIN
State ON State.state_id = City.state_id
JOIN
Country ON Country.country_id = State.country_id
WHERE
col1 LIKE '%keyword%'
OR col2 LIKE '%keyword%'
OR col3 LIKE '%keyword%'
-- ...

这样,您将获得包含关键字的所需列。例如,如果表 City 包含 {'Paris', 'paramatta', 'Porto'},则使用关键字 Par,并且查询 SELECT name FROM city WHERE name LIKE '%Par %' 将返回 { 'Paris', 'paramatta' }

顺便说一句,国家、城市等之间的链接应该在数据库中向后表示:国家 <- 州 <- 城市

关于PHP MYSQL 多个表搜索相同关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4372160/

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