Array bidimensional en base de datos

Enviado por admin el Mar, 01/06/2004 - 19:26.
Clasificado en:

En la lista de correos de php, ante la pregunta

Estimados listeros, ¿Cómo podría guardar un array bidimensional en un mysql?

Se me ocurrió algo como:

Primero, crear una tabla con campos ARRAY_ID,FILA_ID,COL_ID,VALOR, con las tres primeras col como clave primaria

Entonces, guardas con

  1.  <?php
  2.  foreach($aBi as $sRow=>$aCols) {
  3.   foreach($aCols as $sCol=>$sValor) {
  4.   $query="insert into arrays (array_id,fila_id,col_id,valor) VALUES ('$sIdArray','$sRow','$sCol','$sValor')";
  5.   }
  6.  }
  7.  ?>

para recuperar, nada más fácil que

  1.  <?php
  2.  
  3.  // supongo uso de AdoDb
  4.  $rs=$db->getArray("SELECT * from arrays where array_id='$sId'");
  5.  while($aTupla=$rs->fetchRow()) {
  6.   $aBi[$aTupla['fila_id']][$aTupla['col_id']]=$aTupla['valor'];
  7.  }
Imagen de ANA

QUE ESTA BIEN

Enviado por ANA (no verificado) el Jue, 24/06/2004 - 20:48.
Imagen de Perijilillo Desconocido

genial genial¬¬)

Enviado por Perijilillo Desconocido (no verificado) el Jue, 02/02/2006 - 08:05.
Imagen de Perejilillo desconocido

Esa solucion no es optima ya que esa tabla propuesta esta desnormalizada por tener grupos repetitivos. Ademas lo que interpreto es que lo que se quiere es guardar el array en un solo campo. Para ello deberias serializar con serialize() y recuperar con unserialize() el array y guardarlo como un string largo en un campo de la BD.
Tambien podrias usar notacion JSON para serializar la info.

SALUDOS!

Enviado por Perejilillo desconocido (no verificado) el Vie, 25/09/2009 - 09:17.

Enviar un comentario nuevo

El contenido de este campo se mantiene como privado y no se muestra públicamente.
If you have a Gravatar account, used to display your avatar.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato