Pregunta

Soy curioso en cuanto a por qué estoy recibiendo un error en algo que he hecho un millón de veces antes, pero soy de repente en una cierta secuencia de comandos conseguir un error 'Indefinido variables: Fila'

Sin embargo, parece fila define a mí ...

$sql = 'SELECT * FROM table WHERE id="1" LIMIT 1 ';

$res = mysql_query($sql);

    if(mysql_num_rows($res) != FALSE) {

    $row = mysql_fetch_array($res);

    }

Lo anterior es sql seudo ... pero hemos comprobado que la instrucción SQL y sé que es sacar un resultado. También sé que $ fila es el almacenamiento de los datos, porque si voy

echo $row[0];

Me da la información correcta.

Así que yo sepa, se define la variable $ fila. Sin embargo, todavía - un error. ¿Estoy perdiendo la cabeza o lo que me estoy perdiendo aquí? No sólo este error / aviso debería ocurrir si no existiera $ fila?


editar

Lo siento chicos es todo sucede dentro de la sentencia if:

$sql = 'SELECT * FROM table WHERE uID="' . $ID . '" LIMIT 1 ';

$res = mysql_query($sql);

if(mysql_num_rows($res) != FALSE) {

    $row = mysql_fetch_array($res);

$firstName = $row[0];

$lastName = $row[1];

$email = $row[2];

}

editar 2

Si hago un print_r ($ fila) me sale el siguiente:

Array
(
[0] => Robert
[firstName] => Robert
[1] => Nibbles
[lastName] => Nibbles
[2] => robert@nibbles.com
[email] => robert@nibbles.com
)
Undefined variable: row
¿Fue útil?

Solución

Si no inicializar $row a algo fuera de esa sentencia if, entonces es indefinido.

De lo contrario, si no se desea inicializar $row a algún tipo de valor nulo (no del todo irracional), es posible que desee para rodear cualquier código que comprueba $row fuera de la declaración if con algo como

if (isset($row))
  doSomething();

Es un dolor, pero sólo tienes que recordar que cualquier variable que no definen explícitamente, incluso a cero, no están definidos y pueden conducir a un error de tiempo de ejecución si se hace referencia como un valor p en el código (excepto en isset etc. .). Así que, en general, ya sea siempre inicializar las variables o liberalmente aplicar un código como el anterior.

Me disculpo si esto resulta no ser el problema, pero no puedo pensar en nada más que esto, sin ver su código.

EDIT: Lo siento, es "Isset" no "definido". Ha pasado un tiempo desde que he trabajado con PHP podía comprender. Traté de responder a la pregunta con un concepto, no sintaxis. Mi error.

Otros consejos

Offtopic, pero yo recomiendo usar mysql_fetch_assoc () en lugar de mysql_fetch_array, entonces usted puede utilizar el actual nombres de campo en su código, en lugar de algunos números arbitrarios.

print $row[2]

vs

print $row['email];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top