Frage

Ich bin neugierig, warum ich einen Fehler auf etwas bin immer ich eine Million Mal zuvor getan haben, aber ich bin ganz plötzlich an einem bestimmten Skript einen Fehler bekommen ‚Nicht definierte Variable: Zeile‘

Doch Reihe scheint mir definiert ...

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

$res = mysql_query($sql);

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

    $row = mysql_fetch_array($res);

    }

Das oben ist Pseudo-SQL ... aber ich habe die SQL-Anweisung überprüft und ich weiß, es ist ein Ergebnis herausholen. Ich weiß auch, dass $ row die Daten speichert, denn wenn ich gehen

echo $row[0];

Ich erhalte die richtigen Daten.

So mein Wissen wird der $ row Variable definiert. Doch nach wie vor - ein Fehler. Verliere ich meine Meinung oder was bin ich hier fehlt? Sollte nicht diesen Fehler / Bekanntmachung wird nur auftreten, wenn $ row nicht gäbe?


Bearbeiten

Sorry, Jungs its all INSIDE die if-Anweisung geschehen:

$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];

}

bearbeiten 2

, wenn ich tun, um eine print_r ($ row) erhalte ich die folgende:

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

Lösung

Wenn Sie nicht initialisieren $row etwas außerhalb, dass if-Anweisung, dann undefiniert es ist.

Ansonsten, wenn Sie nicht wollen, $row zu irgendeiner Art von Null-Wert (nicht völlig unvernünftig) initialisieren, können Sie einen Code umgeben, die $row außerhalb der if Aussage mit so etwas wie

prüft
if (isset($row))
  doSomething();

Es ist ein Schmerz, aber du musst nur daran zu erinnern, dass alle Variablen, die Sie definieren nicht explizit, auch zu null, sind nicht definiert und können zu einem Laufzeitfehler führen, wenn als R-Wert in Code verwiesen wird (außer in isset usw. .). So in der Regel entweder immer Ihre Variablen initialisieren oder liberal Code wie oben gelten.

Ich entschuldige mich, wenn dies nicht das Problem stellt sich heraus zu sein, aber ich kann ohne zu sehen, den Code von etwas mehr als dies nicht denken.

EDIT: Sorry, es "isset" nicht "definiert". Schon eine Weile her, seit ich actualy mit PHP gearbeitet habe. Ich versuchte, die Frage mit einem Konzept zu beantworten, nicht Syntax. Mein Fehler.

Andere Tipps

Offtopic, aber ich empfehlen die Verwendung von mysql_fetch_assoc () statt mysql_fetch_array, dann können Sie die tatsächliche Nutzung Feldnamen in Ihrem Code, statt einige beliebigen Zahlen.

print $row[2]

vs

print $row['email];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top