2015-11-02 3 views
3
$sql=" SELECT * from `request_location` where requestid = '".$requestid."' "; 
    $result = mysqli_query($con, $sql); 
    if(mysqli_num_rows($result)>0) 
     { 
      echo "("; 
      while($row = mysqli_fetch_assoc($result)) 
       { 
        echo $row["location_tag"]; 
        echo ","; 
       } 
      echo ")"; 
     } 

У меня есть этот код выше, который отображает данные в формате, где результат размещается в круглых скобках, а каждый член отделен запятойОтображение данных из таблицы в PHP

Результат, который я получаю как это

(a,b,c,) 

Хотя это, кажется, хорошо, но я хочу, чтобы запятая не должны появляться после того, как с, так как это последний термин, как этот

(a,b,c) 

Может кто-нибудь, пожалуйста, как удалить запятую после последнего элемента

ответ

1

Решение 1:

Вы можете сделать это с помощью функции и массива implode().

Логика позади:

1) Возьмите пустой массив.

2) Извлеките результаты так же, как и существующие.

3) Добавить результаты в массив.

4) После окончания цикла implode() массив с запятой.

5) Добавить в ожидании ( и .

sql=" SELECT * from `request_location` where requestid = '".$requestid."' "; 
$result = mysqli_query($con, $sql); 
$arr = array(); 
if(mysqli_num_rows($result)>0) { 
    while($row = mysqli_fetch_assoc($result)) { 
    $arr[] = ["location_tag"]; 
    } 
} 
echo ! empty($arr) ? '(' . implode(',', $arr) . ')' : ''; 

Решение 2:

Использование MYSQL-х GROUP_CONCAT() (если вы хотите получать только одно поле из таблицы базы данных).

sql=" SELECT GROUP_CONCAT(location_tag) from `request_location` where requestid = '".$requestid."' "; 
    $result = mysqli_query($con, $sql); 
    $ids = ''; 
    if(mysqli_num_rows($result)>0) { 
     while($row = mysqli_fetch_assoc($result)) { 
     $ids = ["location_tag"]; 
     } 
    } 

echo ! empty($ids) ? '(' . $ids . ')' : ''; 
+0

implode удаляет все запятые тогда как я хочу удалить только последнюю – pp1989

+0

Функция implode() объединяет элемент массива в строку. Таким образом, он должен иметь запятую (переданный параметр) между двумя элементами массива. Проверьте код еще раз. – Pupil

2

Попробуйте использовать PHP str_replace: -

$str='(a,b,c,)'; 
str_replace(",)",")",$str); 

Demo

или попробовать этот код: -

$var= "("; 
while($row = mysqli_fetch_assoc($result)) 
{ 
$var.= $row["location_tag"]; 
$var.= ","; 
} 
$var.= ")"; 
echo str_replace(",)",")",$var); 
0

Используйте условие IF и проверьте num_of_rows

$sql=" SELECT * from `request_location` where requestid = '".$requestid."' "; 
$result = mysqli_query($con, $sql); 
$count = mysqli_num_rows($result); 
if($count>0) 
    { 
     echo "("; 
     $i = 1; 
     while($row = mysqli_fetch_assoc($result)) 
      { 
       echo $row["location_tag"]; 
       if($i<$count) { 
       echo ","; 
       } 
       $i++; 

      } 
     echo ")"; 
    } 
0

, что об этом

$sql= "SELECT * from request_location where requestid = '$requestid'"; 
$result = mysqli_query($con, $sql); 
if(mysqli_num_rows($result)>0) 
    { 
     $new = '' 
     while($row = mysqli_fetch_assoc($result)) 
     { 
      $new .= $row["location_tag"].","; 
     }    

     $data = "(".$new.")"; // Output - (a,b,c,) 
     $new_data = str_replace(",)", ")", $data); 
     echo $new_data ; // Output - (a,b,c) 

    } 
+0

@ pp1989 проверить это –

0

Для добавления "" между двумя строки вы можете использовать implode(",", array_variable), как показано ниже:

$sql=" SELECT * from `request_location` where requestid = '".$requestid."' "; 
$result = mysqli_query($con, $sql); 
if(mysqli_num_rows($result)>0) 
    { 
     while($row = mysqli_fetch_assoc($result)) 
      { 
       $location_tag_arr[] = $row["location_tag"]; 
      } 
     echo ")"; 
    } 

echo "(" . implode(",", $location_tag_arr) . ")"; 
//^output will be: (a,b,c) 
Смежные вопросы