2017-07-13 5 views
-1
$retval = mysqli_query($conn,"SELECT * FROM food WHERE pnrno='$pnrno'"); 
if ($retval) { 
    echo "Your food complain has been successfully fetched"; 
    echo "<table border='1'> 
     <tr> 
     <th>Username</th> 
     <th>PNR Number</th> 
     <th>Food Complain Status</th> 
     </tr>"; 

     while($row = mysqli_fetch_array($retval)) 
     { 
     echo "<tr>"; 
     echo "<td>" . $row['username'] . "</td>"; 
     echo "<td>" . $row['pnrno'] . "</td>"; 
     echo "<td>" . $row['complain_status'] . "</td>"; 
     echo "</tr>"; 
     } 
     echo "</table>"; 
     echo "\r\n"; 
} else { 
    echo "Error: " . $retval . "<br>" . mysqli_error($conn); 
} 

whileループ内のコードが実行されていない(「そうだと思う」)、このメッセージが表示され、テーブルが作成されますが、ユーザ名、pnrno、およびcomplain_statusがフェッチされた後データベースはWebページには印刷されません。どうしてそんなに助けてください。mysqlデータベースからデータを取得した後、データがWebページに表示されないのはなぜですか?

+1

ながら、内側のvar_dump($行)を追加してみてください、それが面白い – Phiter

+2

何を言うかどうかを確認し、[リトルボビー](http://bobby-tables.com/は)言う*** [スクリプトは、SQLのリスクがありますインジェクション攻撃](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)*** [作成](HTTPを学ぶ:。//en.wikipedia。 org/wiki/Prepared_statement)のステートメント([MySQLi](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php))を参照してください。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! –

+0

ファイルの先頭の に[エラー報告](http://stackoverflow.com/questions/845021/how-to-get-useful-error-messages-in-php/845025#845025)を追加してください_whileあなたのPHPタグを開いた直後のtesting_例えば '<?php error_reporting(E_ALL); ini_set( 'display_errors'、1); '何かが得られるかどうかを調べる。 – RiggsFolly

答えて

3

データが存在すると仮定すると、あなたは、クエリに正しいパラメータを送っている、おそらく犯人はあなたrow変数を使用している方法です。 mysqliに連想的な方法で配列をフェッチするように指示していないので、デフォルトでインデックスに設定されています。あなたはあなたにフェッチ機能を変更する必要が

mysqli_fetch_array($retval, MYSQLI_ASSOC) 
+0

うん、これは、または彼はまた、デフォルトでは、実際に 'MYSQLI_BOTH'あるmysqli_fetch_assoc – Phiter

+0

を使用することができます – RiggsFolly

0
$retval = mysqli_query($conn,"SELECT * FROM food WHERE pnrno='$pnrno'"); 

if ($retval) { 

あなたifは、クエリが正常に実行された場合に実行しようとしています。

ただし、存在しない行のクエリは、0行を含むの後に続きます。

クエリによって返される行の数を確認したい、そして、一致するものがない場合、エラーが表示されます。

関連する問題