Problemas con php+mysql+apache en ubuntu

Publicado por lugolu, Agosto 18, 2008, 13:05:56

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

lugolu

instalé xampp en ubuntu 8.04

cuando hago 2 consultas iguales a la base de datos la primera la hace bien, pero la segunda da error, devuelve

CitarWarning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /.../index.php on line 9

y si comento la primera de las consultas anda todo bien

tengo instalado un foro smf+mkportal y anda bien.

ni idea qué puede ser.

para sacarme la duda probé otras cosas que hice antes en php y hace lo mismo (y en windows me andaba).
de todo un poco

focojoaco

CitarWarning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /.../index.php on line 9
generalmente ocurre cuando llamas a la funcion sin tener el resultado de la consulta
(ie. cuando la consulta que realizaste falla por algo)
pega un cacho de codigo para ver mejor...
:up:

lugolu

Cita de: focojoaco en Agosto 18, 2008, 20:19:02
CitarWarning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /.../index.php on line 9
generalmente ocurre cuando llamas a la funcion sin tener el resultado de la consulta
(ie. cuando la consulta que realizaste falla por algo)
pega un cacho de codigo para ver mejor...
:up:

si yo comento la primer llamada (que aśi muestra resultados), la segunda anda, sino sólo carga el primer combo y el segundo queda vacío

cargarCombo("id", "nombre", "genero", "cmbGenero");
cargarCombo("id", "nombre", "formato", "cmbFormato");

function cargarCombo($id, $nombre, $tabla, $combo)
{
$ssql = "SELECT $id as id, $nombre as nombre FROM $tabla ORDER BY $nombre;";
$conn = conectar();
echo $ssql."<br>";
$rs = mysql_query($ssql,$conn);
echo "<select size='1' name='$combo' id='$combo'>";
while ( $a_row = mysql_fetch_assoc($rs ) )
{
echo "<option value='$a_row[id]'>$a_row[nombre]</option>\n";
}
echo "</select><br>";
mysql_close($conn);
     }
de todo un poco

Camello_AR

Tenes un conflicto haciendo las consultas, te diriá, que pruebes, o bien con conecciones persistentes, o abriendo la conexión fuera de la función cargar combo y la cerras al final

algo como


        $conn = conectar();
cargarCombo("id", "nombre", "genero", "cmbGenero");
cargarCombo("id", "nombre", "formato", "cmbFormato");
        mysql_close($conn);
function cargarCombo($id, $nombre, $tabla, $combo)
{
$ssql = "SELECT $id as id, $nombre as nombre FROM $tabla ORDER BY $nombre;";
//$conn = conectar();
echo $ssql."<br>";
$rs = mysql_query($ssql,$conn);
echo "<select size='1' name='$combo' id='$combo'>";
while ( $a_row = mysql_fetch_assoc($rs ) )
{
echo "<option value='$a_row[id]'>$a_row[nombre]</option>\n";
}
echo "</select><br>";
//mysql_close($conn);
     }

focojoaco

#4
Cita de: Camello_AR en Agosto 18, 2008, 23:29:09

exactamente como dice el amigo camello

para aclarar un poco:
el problema puede venir porque al llamar a cargarCombo(), abris y cerras la conexion.
pero fijate que vos tambien lo haces ANTES y DESPUES de llamar a la funcion (particularmente dos veces)
entonces, o lo haces por dentro o lo haces por fuera.
Particularmente yo lo hago desde afuera....

Decidi una forma u otra, si seguis con problemas seguimos probando 
saludo  :up:

Camello_AR

Yo no vi que el abriera 2 veces la conexión (en dos partes distintas) sino que cada llamada hace un abrir y cerrar, por eso recomiendo que haga una apertura de conexión, luego todas las consutasl en esa conexión y al trminar el script cierre

De hecho, no recomendable, si no cerras la conexión al terminar el script igual la termina (slavo un tema de persistencias). En general yo he hecho un "framewok" con funciones cómunes, en rtre ellas un

<? include("framework.php")?>
framework:
<?
include("sql.php");
sql_conectar($sql_data);
//otras funciones, llamados, etc
?>


Si bien parece una serie de llamados a diversos archivos, prefiero, para poder editar y tener a la vista una función propia y parte del código donde se implementa por ejemplo tener un archivo marco, uno con funciones de sql (además de otro con las configuraciones del sql y servidor, que lo edito para cada servidor, y no necesito modificar nada cuando subo al servidor desde mi maquina. Eso va en el array $sql_data

Contenido del sql_data.php (ilustrativo)

<?
$sql_data['servidor'] = "sql.proveedor.com.ar";
$sql_data['puerto'] = "3166";
$sql_data['usuario'] = "usuario";
$sql_data['clave'] = "miclave";
$sql_data['base'] = "base_de_datos";
$sql_data['ruta'] = "/home/camello/public_html/aplicacion"; //esto ultimo no es dato del servidor especificamente, pero es parte de la configuración "especifica"
?>


en ciertos casos me inclino por el uso de arrays para pasar parametros indefinidos a una función, sin esperar deteminados datos, sino que la función actua en función del contenido del array