2012-03-11 16 views
10

i Allways terminan haciendo estocómo traerá sólo una fila de una consulta MySQL

$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; 

¿cómo se hace generalmente? (Sólo quiero evitar el bucle innecesario)

Respuesta

11

Además de las respuestas correctas, hay varias maneras de manejar esto:

  • Si agrega LIMIT 1, el conjunto de resultados solo contendrá una fila y el ciclo while terminará después de una iteración:

    $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; 
    
  • Si llama mysql_fetch_array sin un bucle, obtendrá la primera fila del conjunto de resultados:

    $q = "select whatIwant FROM table where id = 'myId'"; 
    $r = mysql_query($q); 
    $i = mysql_fetch_array($r); 
    $j = $i['whatIwant']; 
    echo $j; 
    
  • Si se agrega a break el cuerpo del bucle, el bucle terminará después de una iteración.

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

También se pueden combinar estos enfoques (aunque utilizando break no es muy elegante en este caso).

El mejor enfoque es utilizar LIMIT y omitir el while bucle, como @zaf shows in his answer. Esto hace que el código sea más claro y evita operaciones innecesarias en la base de datos.

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

Pues bien dejar de lado el bucle:

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

Esto sólo se ha podido ir a la primera línea.

8

Puede especificar el número de filas en la consulta sql utilizando la sintaxis 'LIMIT'.

Además, puede eliminar el bucle while y obtener la primera fila devuelta, si eso es todo lo que desea.

Por ejemplo (y sin comprobación de valor devuelto):

$q = "select whatIwant FROM table where id = 'myId' LIMIT 1"; 
$r = mysql_query($q); 
$i = mysql_fetch_array($r); 
print_r($i); 
0
$sql224="select * from z_category order by id asc LIMIT 1"; 
$res224=mysql_query($sql224); 
$rw224=mysql_fetch_array($res224); 
$activeid2= $rw224['pkid']; 
+3

Bienvenido al desbordamiento de la pila! Aunque este fragmento de código es bienvenido, y puede brindar cierta ayuda, sería [mejorado mucho si incluyera una explicación] (// meta.stackexchange.com/q/114762) de * cómo * aborda la pregunta. Sin eso, tu respuesta tiene mucho menos valor educativo: recuerda que estás respondiendo la pregunta a los lectores en el futuro, ¡no solo a la persona que pregunta ahora! Por favor [edite] su respuesta para agregar una explicación y dar una indicación de qué limitaciones y suposiciones se aplican. –

Cuestiones relacionadas