在 PHP 中,我有如下的 mysql 记录
id country
1 India
2 Usa,Germany
3 India,usa
4 Germany,Uk,India
5 Uk
我想在下拉列表中获取国家,数据只想显示唯一的国家而不是重复的条目和逗号分隔的值
下拉列表应该如下所示
India
Usa
Germany
Uk
请参阅带有数据库名称test
和表的完整工作示例table1
:
<?php
$mysqli = new mysqli("localhost", "root", "", "test");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT * FROM table1";
$result = $mysqli->query($query);
while($row = $result->fetch_row()) {
$rows[]=$row['1']; //getting aal country
}
/* free result set */
$result->free();
/* close connection */
$mysqli->close();
?>
<form>
<select>
<?php foreach ($rows as $mod){?>
<option value="<?php echo $mod?>"><?php echo $mod?></option>
<?php }?>
</select>
</form>
<?php $all_country = array();
foreach ($rows as $mod){
$arr = explode(',', $mod);
foreach($arr as $row){ if(trim($row) != '')
$all_country[] = trim($row);
}
}
$input = array();
$input = array_unique($all_country);
?>
<form>
<select>
<?php foreach ($input as $mod){?>
<option value="<?php echo $mod?>"><?php echo $mod?></option>
<?php }?>
</select>
</form>
这是结果:请注意,英国和英国有大小写问题,否则它是独一无二的。
Simple data:
Array
(
[0] => India
[1] => Usa
[2] => Germany
[4] => usa
[6] => Uk
[8] => UK
)
unique country;
Array
(
[0] => India
[1] => Usa
[2] => Germany
[4] => usa
[6] => Uk
[8] => UK
)
MySQL 查询
SELECT country FROM table
在PHP中
你可以得到数组country
。
现在使用mysql_fetch_assco
你将有关联数组。
对该数组值执行内爆,然后将它们分解为 ,。
现在在该数组上执行 array_unique ,您将拥有您的数组。
例子
$queriedResult = array
(
'India',
'Usa,Germany',
'India,usa',
'Germany,Uk,India',
'Uk'
);
$result = implode(',',$queriedResult);
之后$result
将如下所示。
$result = 'India,Usa,Germany,India,usa,Germany,Uk,India,Uk';
现在我们在字符串上方爆炸,
。
$newArray = explode(',',$result);
我们将有
$newArray = array
(
'India',
'Usa',
'Germany',
'India',
'usa',
'Germany',
'Uk',
'India',
'Uk'
);
现在执行最后一步。
$finalArray = array_unique($newArray);
生产。
$finalArray = array
(
'India',
'Usa',
'Germany'
'Uk'
);
您可能应该考虑重新考虑存储数据的模型。因为您希望在 SQL 语句中使用DISTINCT关键字来获取唯一的国家/地区。
但是,如果您不想这样做,则可以使用explode来获取逗号分隔值。
假设我们在数组 $results 中有您的数据,并且您希望在数组 $unique_countries 中有您的唯一国家/地区
foreach($results as $result){
$result_countries = explode(',',$result['country']);
foreach($result_countries as $country){
if(!in_array($country,$unique_countries)){
$unique_countries[] = $country;
}
}
}
MySQL 查询
从表中选择 group_concat(country)
之后在php中,
$duplicateCountry = explode(',',$sqlResult);
$duplicateCountry = array_unique($duplicateCountry);
给你的数组。