PDA

Ver la Versión Completa : cargas el resultado de una consulta en un vector


cahosoft
11-08-2004, 23:13:37
Hola todos como estas...

Mi inquitud es la siguiente....
Tengo una base de datos en my sql... deseo almacenar los datos que resultan de una consulta en un vector.... de la siguiente manera se hace:
$sql="SELECT * FROM ART_SINONI
WHERE CODCARRERA='$codcarrera'
ORDER BY CODMAT";
$res_3=mysql_db_query("ayre",$sql);
$cont=0;
while ($resultado3 = mysql_fetch_array($res_3))
{
$cont++;
$s_codmat[$cont]=$resultado3["CODMAT"];
$s_sinonimo[$cont]=$resultado3["SINONIMO"];
}

quisiera saber... si hay una mejor forma de hacerlo.....

roman
12-08-2004, 01:19:43
$sql =
"SELECT * FROM ART_SINONI ".
"WHERE CODCARRERA='$codcarrera' ".
"ORDER BY CODMAT";

$res_3=mysql_db_query("ayre",$sql);
$s_codmat = array();
$s_sinonimo = array();
while ($resultado3 = mysql_fetch_array($res_3))
{
$s_codmat[]=$resultado3["CODMAT"];
$s_sinonimo[]=$resultado3["SINONIMO"];
}


No sé si es mejor o no pero así me gusta más. Evitas el uso del contador. Cuando haces la asignación con los corchetes vacíos los elementos se van insertando secuencialmente.

// Saludos

cahosoft
13-08-2004, 16:18:57
te agradesco el aporte

Emilio
20-08-2004, 00:30:39
La respuesta de Roman me parece perfecta, no obstante con su permiso añadiría que no es necesario iniciarlizar los arrays
$s_codmat = array();
$s_sinonimo = array();

PHP ya inicializa las variables él solito, de ahí que podamos con toda comodidad pasar de un tipo de dato a otro sin intervención alguna por nuestra parte.

roman
20-08-2004, 01:05:25
no obstante con su permiso añadiría que no es necesario iniciarlizar los arrays


¡Ah! Pero es que hay una razón para hacerlo, ;)

Los arreglos ciertamente se iniciaizarán desde la primera vez que asignemos


$arreglo[] = $resultado['elemento'];


siempre y cuando pasemos por ahí. Si la consulta no devuelve resultados entonces el interior del while nunca se ejecutará y la variable $arreglo, además de no haber quedado definida- y me parece que las últimas versiones de PHP son más estrictas en ese aspecto - no será un arreglo por lo que cualquier llamada a una función que utilice arreglos nos mandará un error. Claro que podríamos verificar con:


if (isset($arreglo) && is_array($arreglo))
{
...
}


pero me parece más natural en tal caso devolver un arreglo vacío como se obtiene con la inicialización.

// Saludos