0

PHP の for ループに問題があります。
ループの反復が速すぎて、内部の html コードがエコーされる前に終了します。

<?php for($i = 0; $i < sizeof($shoppingCart); $i++) { 
    $sql = "SELECT * FROM products_test WHERE id = " . substr($shoppingCart[$i], 5) . "";
    $q = $DBH->query($sql) or die("failed!");
    $q->setFetchMode(PDO::FETCH_ASSOC);
    $r = $q->fetchAll();
    echo '<tr>';
    echo '<td><img src="' . $r[$i]['image']. '" /></td>';
    echo '<td>' . $r[$i]['title'] . '</td>';
    echo '<td>' . $r[$i]['desc'] . '</td>';
    echo '<td>' . $r[$i]['price'] . '</td>';
    echo '<td><input type="number" id="qty"></td>';
    echo '<td>Remove</td>';
    echo '</tr>';
} ?>

一時変数の設定は機能しません。動作が同じになるだけだからです。

どうしたの?

前もって感謝します!

4

2 に答える 2

0

あなたのクエリは常に1行を返すように私には思えますか?ただし、存在しない行に。を使用してアクセスしようとします$r[$i]

これは、ブラウザに何も表示されない理由を説明します。ただし、ブラウザのソースコードを表示してみてください。空のhtmlタグが表示される場合は、この問題です。

で配列の内容を表示して、print_r($r)これがどのように見えるかを確認してください。

于 2012-06-24T18:43:19.903 に答える
0

配列が空になる可能性があります。場合に備えてキャッチを追加する必要があります。

empty関数を使用して、次のようなものを作成します。

<?php 
 if (!empty($shoppingCart))
 {
  for($i = 0; $i < sizeof($shoppingCart); $i++) { 
     $sql = "SELECT * FROM products_test WHERE id = " . substr($shoppingCart[$i], 5) . "";
     $q = $DBH->query($sql) or die("failed!");
     $q->setFetchMode(PDO::FETCH_ASSOC);
     $r = $q->fetchAll();
     echo '<tr>';
     echo '<td><img src="' . $r[$i]['image']. '" /></td>';
     echo '<td>' . $r[$i]['title'] . '</td>';
     echo '<td>' . $r[$i]['desc'] . '</td>';
     echo '<td>' . $r[$i]['price'] . '</td>';
     echo '<td><input type="number" id="qty"></td>';
     echo '<td>Remove</td>';
     echo '</tr>';
  } 
 }
 else
 {
     echo '<tr><td>Your shopping cart is empty</td></tr>';
 }
?>
于 2012-06-24T18:33:02.057 に答える