2017-06-14 9 views
-2

whileループのテーブルにレコードが存在するかどうかを確認する必要があります。そうでなければ、メッセージを表示したい。私が行ったコードから、行が存在する場合にもメッセージが出力されます。以下はコードですPHP - whileループのチェック行がある

<?php 
$mysqli = new mysqli("localhost", "root", "", "my_dev"); 

/* check connection */ 
if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    die(); 
} 

/* create a prepared statement */ 
if ($stmt = $mysqli->prepare("SELECT * FROM user WHERE staff_id=?")) 
{ 
    /* bind parameters for markers */ 
    $stmt->bind_param("i", $id); 

    /* execute query */ 
    $stmt->execute(); 

    /* store result */ 
    $stmt->store_result(); 

    /* bind result variables */ 
    $stmt->bind_result($t_id, $name, $ic_no); 

    /* fetch value */ 
    while ($row = $stmt->fetch()) { ?> 

     <div class="form-group"> 
      <input type="text" name="nama[]" id="nama" class="form-control" 
      placeholder="Nama" value="<?php echo $name?>" > 
     </div> 

     <div class="form-group"> 
      <input type="text" name="ic_no[]" id="ic_no" class="form-control" 
      placeholder="No. K/P" value="<?php echo $ic_no; ?>" > 
     </div> 

    <?php } 

    if ($row < 1) { 
     echo "No records!"; 
    } 

    /* close statement */ 
    $stmt->close(); 

} 

どのような状態を確認する適切な方法はありますか?

+1

'num_rows'を使用してください。 –

+0

これは十分に単純なようです。しかし、私は頭の上から言ってみたくない。私はこのようなどこかに行くだろう:https://www.packtpub.com/web-development/ajax-and-php-building-modern-web-applications-2nd-edition –

+0

あなたはどのようにレコードwhileループに存在しますか?私は質問があると思う、あなたはそれがデータベースに存在するかどうかを判断するためにそれを比較したいですか? –

答えて

1

質問する必要がある質問は「$rowは何ですか?」です。

while上記のすべてが(私は知らない、私はmysqliのを使用していない)が正しいと仮定して、のは、あなたのコードをステップ実行してみましょう:

while ($row = $stmt->fetch()) { 

限り$stmt->fetch()はこの中で、値を返すようオブジェクトである可能性が最も高いオブジェクト$rowがオブジェクトを受け取ると、whleはこれをtrueとみなし、実行は次の行に進みます。 $stmt->fetch()の行がなくなると、falseが返され、whileループが終了します。

一方、あなたがループにいる間、あなたは、データベースからのデータにアクセスし、一般的に$row->columnName

のようなものを参照することにより、ので、あなたのwhileループは、このようなものになるだろう:

while($row = $stmt->fetch()) { 
    print "I'm column one: " . $row->columnOnesName . "<br>"; 
    print "I'm column two: " . $row->columnTwosName . "<br>"; 
} 

あなたが行を使い果たすと、$row$stmt->fetch()の値を取得します。これはおそらくnullです。これは真ではないと評価され、whileループは中断します。

データの任意の行があったかどうかを確認するためにnull < 1.

迅速かつ簡単な方法は、単にフラグを使用する場合、あなたはその後、

if ($row < 1) { 

を行い、それは枝をたどるかどう。

$isEmpty = true; 
while($row = $stmt->fetch()) { 

    $isEmpty = false; 

    // display table's output with $row->columnNames 
} 

if($isEmpty) { 
    print "no rows in table"; 
} 
+0

ありがとうございます。 – Amran

関連する問題