sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo hago un bucle a través de una consulta mysql con php?

Aquí está la plantilla básica para este tipo de cosas, usando funciones php integradas (suponiendo mysql de estilo antiguo, pero similar usando otros back-ends de bases de datos o bibliotecas de nivel superior). En este ejemplo, los errores se manejan lanzando excepciones, pero esa es solo una forma de hacerlo.

  1. Conectarse a la base de datos
  2. Asegúrese de que la conexión fue exitosa
  3. Ejecutar la consulta
  4. Asegúrese de que la consulta no haya fallado por algún motivo (generalmente un error de sintaxis SQL). Si falló, averigüe por qué y maneje ese error
  5. Compruebe que la consulta arrojó al menos una fila (normalmente cero filas es un caso especial)
  6. Recorra las filas devueltas, haciendo lo que necesite hacer.

Las clases de excepción deberían definirse (son la única sintaxis no integrada aquí, pero no debe lanzar excepciones simples).

Código de ejemplo:

<?PHP
//try to connect to your database.
$conn = mysql_connect(...);

//handle errors if connection failed.
if (! $conn){
    throw new Db_Connect_Error(..); 
}   

// (try to) run your query.
$resultset = mysql_query('SELECT ...');

//handle errors if query failed.  mysql_error() will give you some handy hints.
if (! $resultset){ 
    // probably a syntax error in your SQL, 
    // but could be some other error
    throw new Db_Query_Exception("DB Error: " . mysql_error()); 
}

//so now we know we have a valid resultset

//zero-length results are usually a a special case    
if (mysql_num_rows($resultset) == 0){   
    //do something sensible, like tell the user no records match, etc....
}else{
    // our query returned at least one result. loop over results and do stuff.
    while($row = mysql_fetch_assoc($resultset)){
        //do something with the contents of $row
    }
}