Как я могу определить, достигну ли я последнего результата при использовании WHILE, чтобы я мог пропустить запятую в своем выводе? - PullRequest
0 голосов
/ 03 октября 2011

Я знаю, что могу делать то, что мне нужно, получая общее количество записей, и если я на последней записи, не отображать запятую, но должен быть лучший способ.

Я пытаюсь построить оператор SQL программно, используя значения из MySQL.

Код:

$fql="SELECT ";

$result = mysql_query("SELECT field FROM fb_aa_fields WHERE fql_table = '$query'", $conn);

while ($row = mysql_fetch_array($result)){
    $get_field = "".$row{'field'}."";


$fql = $fql."$get_field, ";

}

$fql = $fql."FROM ".$query." WHERE owner=".$get_uid.""; 

Это выводит это:

SELECT помощь, can_upload, cover_object_id, cover_pid, созданный, описание, edit_link, ссылка, местоположение, модифицированный, updated_major, имя, object_id, владелец, photo_count, размер, тип, video_count, видимый, ИЗ альбома, ГДЕ владелец = 522862206

Проблема в последней запятой между «видимым» и «ОТ». Как, по вашему мнению, лучший способ убрать запятую?

1 Ответ

0 голосов
/ 11 июля 2012

Нетрудно определить, находитесь ли вы на первом элементе, чем на последнем. Вы могли бы сделать как

$i = 0;
while($row =...) {
    if ($i++) $fql .= ',';
    $fql .= $row['field'];
}

Или, возможно, лучше отложить привязку полей к строке до конца. Есть встроенная функция implode, которую вы можете использовать для вставки запятых между ними.

$fields = array();
while($row =...) {
    $fields[] = $row['field'];
}
$fql .= implode(',', $fields);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...