2011-10-22 15 views
0

この問題は、最近私に起こったようです(前の同様のシナリオでこの問題が発生したことは覚えていません)。次のコードでは、phpがループし、MySQLテーブルの値を持つフォームを表示します。値のいずれかが空の文字列が含まれている場合は、私は、次の通知を得る:PHP MySQLi fetch_object()が空の文字列の場合、未定義の変数が返されます

Notice: Undefined variable: row in /home/public_html/index.php on line XXX

文字列が空の場合、それだけ起こります。

これは、フォームのコードです:今、私は以来、列にスペースのデフォルト値を与えると思っている

while ($tmp = $res->fetch_object()->$col) { 
    $row[$keys[$i]] = trim((string)$tmp); 
    $i++; 
} 

<?php 
    for ($i=1; $i<5; $i++) { 
     $val = $env->getVal("plan_title_$i,plan_desc_$i,plan_price_$i,plan_link_$i"); 
    } 
?> 

とデータを引っ張っGETVALコードの一部それは通知の問題を解決するようです。しかし、これはBLOBフィールドなので不可能です。

誰かが、値が空の文字列の場合、$行が未定義にならないようにする方法を知っていますか?これは空の文字列でのみ発生します。

+0

もっと読む$$ [$ i]は定義されていません – Grumpy

+0

この行は '$ row [$ keys [$ i]] =(文字列)$ tmp;' – Melsi

+0

@Grumpyというエラーをスローすることを意味しますか?正の$ keys [$ i]が適切に定義されています。そうでない場合は、スクリプトを早期に終了させるでしょう。 –

答えて

1

私たちは、これが解決策になるには、チャットで見つかった:

while (($tmp = $res->fetch_object()->$col)!==null) 

これは、DBの値が空(空の文字列)場合であっても、ループを入力することができます。 whileは空の値を入力しなかったため、returnステートメントでは未定義の変数通知が表示されました。

+0

もう一度ありがとうMelsi。あなたの忍耐と助けは素晴らしかったです。 –

関連する問題