PDA

Ver la Versión Completa : Me Da Un Error Y No Se Porque


David
01-08-2003, 22:28:21
Escribo el siguiente código :

$result = pg_query($conn,"select * from $fichero");
$filas = pg_numrows($result);
if ($filas <> 0) {
print ("<table border = 1>");
for ($i=0;$i<$filas;$i++){
$vector = pg_fetch_row($result);
print ("<tr>");
for ($j=0;$j<count($vector);$j++){
print ("<td>".pg_result($result,$i,$j)."</td>");
}
print ("</tr>");
}
print ("</table>");

Y obtengo el resultado esperado , los campos de la base de datos se muestran tal cual.Pero el problema viene cuando quiero introducir el mismo codigo dentro de una función :
function rellenar(){
$result = pg_query($conn,"select * from $fichero");
$filas = pg_numrows($result);
if ($filas <> 0) {
print ("<table border = 1>");
for ($i=0;$i<$filas;$i++){
$vector = pg_fetch_row($result);
print ("<tr>");
for ($j=0;$j<count($vector);$j++){
print ("<td>".pg_result($result,$i,$j)."</td>");
}
print ("</tr>");
}
print ("</table>");

}

Cuando llamo a la funcion rellenar();
pues no me completa la base de datos y me da este error :

Warning: pg_query(): supplied argument is not a valid PostgreSQL link resource in ...

Warning: pg_numrows(): supplied argument is not a valid PostgreSQL result resource in ...

Pero si es el mismo código ,que tiene que ver que este dentro de una función, por más que pienso no sé donde esta el error.

roman
02-08-2003, 00:47:20
Es cierto que es difícil entender lo que sucede debido al manejo extraño (a mi parecer) que hace PHP con las variables. Cuando usas pg_query fuera de la función las variables $conn y $fichero son aquellas que hayas asignado anteriormente. Sin embargo, dentro de una función, $conn y $fichero se refieren a variables locales al procedimiento que no han sido asignadas y por tanto no tienen los valores esperados.

Para remediarlo puedes hacer dos cosas:

1. Pasar $conn y $fichero como parámetros de la función rellenar()
2. Declarar $conn y $fichero como variables globales dentro de la función rellenar():


function rellenar()
{
global $conn, $fichero;

...
}Esto le dirá a PHP que son variables externas a la función.

// Saludos