J'obtiens un “undefined variable” PHP avis
Je suis curieux de savoir pourquoi j'obtiens une erreur sur quelque chose que j'ai fait un million de fois avant, mais je suis tout d'un coup sur un certain script d'obtenir une erreur "Undefined variable: la ligne'
Encore rangée semble définis pour moi...
$sql = 'SELECT * FROM table WHERE id="1" LIMIT 1 ';
$res = mysql_query($sql);
if(mysql_num_rows($res) != FALSE) {
$row = mysql_fetch_array($res);
}
Ci-dessus est de la pseudo sql... mais j'ai vérifié que l'instruction sql et je sais que je suis en sortir un résultat. Je sais aussi que $row est de stocker les données, parce que si je vais
echo $row[0];
Je obtenir les bonnes données.
Donc, à ma connaissance, le $row variable est définie. Pourtant, encore une erreur. Suis-je perdre mon esprit, ou ce qui me manque ici? Ne devriez pas cette erreur/avis ne se produira que si $row n'existait pas?
modifier
Désolé les gars sa se passe à l'INTÉRIEUR de l'instruction 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];
}
edit 2
si je fais un print_r($row), je reçois le suivant:
Array
(
[0] => Robert
[firstName] => Robert
[1] => Nibbles
[lastName] => Nibbles
[2] => robert@nibbles.com
[email] => robert@nibbles.com
)
Undefined variable: row
- pourriez-vous ajouter la partie de code qui génère l'erreur mentionné ?
- En effet, où est l'erreur? Si c'est en dehors de la "si", l'instruction, puis il est indéfini.
- à l'intérieur de la SI la déclaration est le seul endroit où $row est utilisé.
- il ressemble certainement vous avez un chien errant $row ailleurs...
- c'est ce que je pensais aussi, mais sur le fait de faire une recherche dans le fichier il y a 4 les instances et à tous les 4 sont dans cette instruction si! je suis à perdre mes billes.
- si je supprime le dessus Si l'instruction et ce qui est à l'intérieur de l'erreur disparaît. donc il ne peut pas être tout autre $ligne ailleurs peut-il?
- L'erreur doit dire ce ligne.
- Il se doit - mais il ne l'est pas. Je n'ai jamais vu cette erreur avant sans un numéro de ligne.
Vous devez vous connecter pour publier un commentaire.
Si vous n'avez pas initialiser
$row
à quelque chose d'extérieur que si l'instruction, puis il est indéfini.Sinon, si vous ne voulez pas initialiser
$row
à une sorte de valeur null (pas tout à fait déraisonnable), vous pouvez entourer le code qui vérifie$row
à l'extérieur de laif
déclaration avec quelque chose commeC'est une douleur, mais vous avez juste à vous rappeler que toutes les variables que vous ne définissez pas explicitement, même à null, ce ne sont pas définis et peut conduire à une erreur d'exécution si la référence de rvalue dans le code (sauf dans
isset
etc.). Donc, en général, soit de toujours initialiser les variables ou appliquez généreusement le code comme ci-dessus.Je m'excuse si cela s'avère ne pas être le problème, mais je ne peux pas penser à quelque chose de plus que cela sans voir votre code.
EDIT: Désolé, c'est le "isset" pas "défini". Été un moment depuis que j'ai effectivement travaillé avec PHP. J'ai essayé de répondre à la question avec un concept, pas de syntaxe. Mon erreur.
defined
ne fait pas ce que vous en pensez ici. Tu veux sans doute direisset
.Futiles, mais je recommande d'utiliser mysql_fetch_assoc() au lieu de mysql_fetch_array, puis vous pouvez les utiliser réellement les noms de champ dans votre code, à la place de certaines des nombres arbitraires.
vs