Domanda

Sono curioso di sapere perché sto ricevendo un errore su qualcosa che ho fatto un milione di volte prima, ma sono tutto ad un tratto su un determinato script di ottenere un errore 'non definita variabile: row'

Ancora fila sembra definito a me ...

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

$res = mysql_query($sql);

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

    $row = mysql_fetch_array($res);

    }

È possibile che questo è SQL pseudo ... ma ho verificato che istruzione SQL e so che la sua facendo emergere un risultato. So anche che $ riga è la memorizzazione dei dati, perché se vado

echo $row[0];

ottengo i dati giusti.

Quindi, a mia conoscenza, la variabile $ row è definito. Eppure ancora - un errore. Sto perdendo la testa o che cosa mi manca qui? Dovrebbe non solo questo errore / avviso verificarsi se $ fila non esistesse?


modifica

Scusate ragazzi il suo tutto accade dentro l'istruzione 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];

}

modifica 2

se faccio un print_r ($ riga) ottengo il seguente:

Array
(
[0] => Robert
[firstName] => Robert
[1] => Nibbles
[lastName] => Nibbles
[2] => robert@nibbles.com
[email] => robert@nibbles.com
)
Undefined variable: row
È stato utile?

Soluzione

Se non si inizializza $row a qualcosa al di fuori che, se dichiarazione, allora è indefinito.

In caso contrario, se non si desidera inizializzare $row a qualche tipo di valore nullo (non del tutto irragionevole), si potrebbe voler circondare qualsiasi codice che controlla $row al di fuori della dichiarazione if con qualcosa di simile

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

È un dolore, ma hai appena avuto modo di ricordare che tutte le variabili non definiscono in modo esplicito, anche per nulla, sono indefiniti e possono portare a un errore di runtime se si fa riferimento come rvalue nel codice (tranne che in isset etc .). Quindi, in generale, sia sempre inizializzare le variabili o liberalmente applicare il codice come sopra.

Mi scuso se questo risulta non essere il problema, ma non riesco a pensare a qualcosa di più di questo senza vedere il vostro codice.

EDIT: Scusate, è "Isset" non "definito". Stato un po 'da quando ho actualy lavorato con PHP. Ho cercato di rispondere alla domanda con un concetto, non sintassi. Il mio errore.

Altri suggerimenti

Offtopic, ma mi consiglia di utilizzare mysql_fetch_assoc () invece di mysql_fetch_array, quindi è possibile utilizzare l'attuale i nomi dei campi nel codice, invece di alcuni numeri arbitrari.

print $row[2]

vs

print $row['email];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top