mysql获取具有逗号分隔值的唯一数据


mysql fetch unique data with comma separated values

在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);

给出您的数组。