在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
)
您可能应该考虑重新思考存储数据的模型。因为您希望在SQL语句中使用DISTINCT关键字来获得唯一的国家/地区。
但是,如果您不想这样做,您可以使用分解来获得逗号分隔的值。
假设我们在数组$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查询
SELECT country FROM table
在PHP中
您可以获得country
的数组。
现在使用mysql_fetch_assco
,您将拥有关联数组。
对该数组值执行内爆操作,然后将其分解为,。
现在,对该数组执行arrayunique,您就拥有了自己的数组。
示例
$queriedResult = array
(
'India',
'Usa,Germany',
'India,usa',
'Germany,Uk,India',
'Uk'
);
$result = implode(',',$queriedResult);
之后CCD_ 5将如下。
$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'
);
MySQL查询
从表中选择group_concat(国家/地区)
之后在php中,
$duplicateCountry = explode(',',$sqlResult);
$duplicateCountry = array_unique($duplicateCountry);
给出您的数组。