質問
私は前に百万回をやった理由は、私が何かにエラーを取得していますへと興味がなく、エラーを取得して、特定のスクリプトに突然のすべてをしています「未定義の変数:行」
しかし、行
...私に定義されているようです$sql = 'SELECT * FROM table WHERE id="1" LIMIT 1 ';
$res = mysql_query($sql);
if(mysql_num_rows($res) != FALSE) {
$row = mysql_fetch_array($res);
}
上記の擬似sqlです...しかし、私は、SQL文と、私はその結果を引き出す知っていることをチェックしました。私は
行く場合ので、私はまた、$行は、データを格納していることを知っていますecho $row[0];
私は、正しいデータを取得します。
私の知る限りでは、$の列変数が定義されているので。しかし、まだ - エラー。私は私の心を失っていますか私はここで何をしないのですか? $行が存在しなかった場合、このエラー/予告だけでは発生しません?
<時間>編集
申し訳ありませんが、みんなそのすべてのif文INSIDE起こっます:
$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];
}
<時間>
編集2
私は次を取得しますprint_r($行)を行う場合:
Array
(
[0] => Robert
[firstName] => Robert
[1] => Nibbles
[lastName] => Nibbles
[2] => robert@nibbles.com
[email] => robert@nibbles.com
)
Undefined variable: row
解決
$row
を初期化しない場合は、、それは未定義です。
あなたがNULL値のいくつかの種類(完全に不合理ではない)に$row
を初期化したくない場合は、そうでなければ、あなたは
のようなもので$row
文の外if
をチェックする任意のコードを囲むようにしたいかもしれません
if (isset($row)) doSomething();
それは苦痛だが、あなたはちょうどあなたもnullに、明示的に定義していないすべての変数は、未定義であるとisset
などを除き、コード内で右辺値(として参照場合はランタイムエラーにつながることができますことを覚えておくようになってきました。)。だから、一般的には、どちらか常にあなたの変数を初期化するか、自由に上記のようなコードを適用します。
これは問題ではないことが判明した場合、私は謝罪が、私はあなたのコードを見ることなくこれ以上何も考えていないことができます。
編集:申し訳ありませんが、それは "ISSET" "定義されて" いません。私はactualy PHPで働いてきたので、しばらくして。私はコンセプト、ないの構文で質問に答えることを試みました。私のミスます。
他のヒント
Offtopic、私は mysql_fetch_assoc()を使用することをお勧めしの代わりには、mysql_fetch_arrayで、その後、あなたが実際に使用することができます代わりに、いくつかの任意の数のあなたのコード内のフィールド名、ます。
print $row[2]
対
print $row['email];