2010-06-04 7 views
5

quiero repetir todo desde una consulta en particular. Si echo $ res solo obtengo una de las cadenas. Si cambio el segundo argumento de mysql_result puedo obtener el 2º, 2º, etc. pero lo que quiero son todos ellos, repetidos uno tras otro. ¿Cómo puedo convertir un resultado de mysql en algo que pueda usar?Cómo hacer eco de las filas de la tabla desde el archivo db (php)

me trataron:

$query="SELECT * FROM MY_TABLE"; 
$results = mysql_query($query); 
$res = mysql_result($results, 0); 

while ($res->fetchInto($row)) { 
    echo "<form id=\"$row[0]\" name=\"$row[0]\" method=post action=\"\"><td style=\"border-bottom:1px solid black\">$row[0]</td><td style=\"border-bottom:1px solid black\"><input type=hidden name=\"remove\" value=\"$row[0]\"><input type=submit value=Remove></td><tr></form>\n"; 
} 

Respuesta

16

El enfoque habitual sería algo como esto:

$query="SELECT * FROM MY_TABLE"; 
$results = mysql_query($query); 

while ($row = mysql_fetch_array($results)) { 
    echo '<tr>'; 
    foreach($row as $field) { 
     echo '<td>' . htmlspecialchars($field) . '</td>'; 
    } 
    echo '</tr>'; 
} 
8
$result= mysql_query("SELECT * FROM MY_TABLE"); 
while($row = mysql_fetch_array($result)){ 
     echo $row['whatEverColumnName']; 
} 
+0

Gracias, su respuesta también trabaja muy bien, pero el otro chico respondió primero. –

+2

En realidad, esta respuesta solo muestra una sola columna de cada fila. – ToolmakerSteve

10

Ampliando la respuesta aceptada:

function mysql_query_or_die($query) { 
    $result = mysql_query($query); 
    if ($result) 
     return $result; 
    else { 
     $err = mysql_error(); 
     die("<br>{$query}<br>*** {$err} ***<br>"); 
    } 
} 

... 
$query = "SELECT * FROM my_table"; 
$result = mysql_query_or_die($query); 
echo("<table>"); 
$first_row = true; 
while ($row = mysql_fetch_assoc($result)) { 
    if ($first_row) { 
     $first_row = false; 
     // Output header row from keys. 
     echo '<tr>'; 
     foreach($row as $key => $field) { 
      echo '<th>' . htmlspecialchars($key) . '</th>'; 
     } 
     echo '</tr>'; 
    } 
    echo '<tr>'; 
    foreach($row as $key => $field) { 
     echo '<td>' . htmlspecialchars($field) . '</td>'; 
    } 
    echo '</tr>'; 
} 
echo("</table>"); 

Beneficios:

  • Usando mysql_fetch_assoc (en lugar de mysql_fetch_array sin segundo parámetro para especificar el tipo), evitamos conseguir cada campo dos veces, una vez para un índice numérico (0, 1, 2, ..), y una segunda vez para el clave asociativa.

  • Muestra los nombres de los campos como una fila de encabezado de la tabla.

  • Muestra cómo obtener column name ($ clave) y value ($ campo) para cada campo, como iterar sobre los campos de una fila.

  • Envuelto en <table> para que se muestre correctamente.

  • (OPCIONAL) muere con la visualización de cadena de consulta y mysql_error, si la consulta falla.

Ejemplo de salida:

Id  Name 
777  Aardvark 
50  Lion 
9999 Zebra 
+1

mysql_fetch_assoc resolvió mi problema de salida duplicada :) +1 –

Cuestiones relacionadas