Как получить только строку из запроса mysql

i всегда в конечном итоге делает это

$q = "select whatIwant FROM table where id = 'myId'";
$r = mysql_query($q);
while($i = mysql_fetch_array($r){
   /* iterate just one withem */
   $j = $i['whatIwant'];
}
echo $j;

Как это обычно делается? (я просто хочу избежать ненужного цикла)

Ответ 1

В дополнение к правильным ответам есть несколько способов справиться с этим:

  • Если вы добавите LIMIT 1, результирующий набор будет содержать только одну строку, а цикл while завершится после одной итерации:

    $q = "select whatIwant FROM table where id = 'myId' LIMIT 1";
    $r = mysql_query($q);
    while($i = mysql_fetch_array($r)) {
       $j = $i['whatIwant'];
    }
    echo $j;
    
  • Если вы вызываете mysql_fetch_array без цикла, вы получите первую строку набора результатов:

    $q = "select whatIwant FROM table where id = 'myId'";
    $r = mysql_query($q);
    $i = mysql_fetch_array($r);
    $j = $i['whatIwant'];
    echo $j;
    
  • Если вы добавите break в тело цикла, цикл завершится после одной итерации.

    $q = "select whatIwant FROM table where id = 'myId'";
    $r = mysql_query($q);
    while($i = mysql_fetch_array($r)) {
       $j = $i['whatIwant'];
       break;
    }
    echo $j;
    

Вы также можете комбинировать эти подходы (хотя использование break в этом случае не очень элегантно).

Наилучший подход заключается в использовании LIMIT и опускании цикла while, поскольку @zaf показывает в своем ответе. Это делает код более понятным и позволяет избежать ненужных операций в базе данных.

Ответ 2

Вы можете указать количество строк в запросе sql, используя синтаксис "LIMIT".

Кроме того, вы можете просто удалить цикл while и вернуть первую строку - если это все, что вы хотите.

Например (без проверки возвращаемого значения):

$q = "select whatIwant FROM table where id = 'myId' LIMIT 1";
$r = mysql_query($q);
$i = mysql_fetch_array($r);
print_r($i);

Ответ 3

добавить LIMIT X, Y, где X - стартовая строка, а Y - количество строк для возврата

//will always return 1 row. note your orders

$q = "SELECT whatIwant FROM table WHERE id = 'myId' limit 0, 1";

http://php.about.com/od/mysqlcommands/g/Limit_sql.htm

Ответ 4

select whatIwant FROM table where id = 'myId' limit 1

Ответ 5

Ну, тогда оставьте петлю:

$q = "select whatIwant FROM table where id = 'myId'";
$r = mysql_query($q);
$i = mysql_fetch_array($r);
$j = $i['whatIwant'];
echo $j;

Это приведет только к первой строке.

Ответ 9

$sql224="select * from z_category order by id asc LIMIT 1";
$res224=mysql_query($sql224);
$rw224=mysql_fetch_array($res224);
$activeid2= $rw224['pkid'];