Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Me Da Un Error Y No Se Porque (https://www.clubdelphi.com/foros/showthread.php?t=2682)

David 01-08-2003 21:28:21

Me Da Un Error Y No Se Porque
 
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 01-08-2003 23: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():

Código PHP:

function rellenar()
{
  global 
$conn$fichero;

  ...


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

// Saludos


La franja horaria es GMT +2. Ahora son las 20:36:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi