0

このクエリを実行できません。最初の DB エントリのみが表示されます。どんなアイデアでも大歓迎です。

/* 準備 */

$sql = "SELECT personal.firstName, personal.lastName, etc. 
        FROM personal 
        LEFT JOIN exam 
        ON personal.P_ID=exam.P_ID 
        LEFT JOIN contact 
        ON exam.P_ID=contact.P_ID 
        WHERE exam.Level = ? 
        AND exam.Centre!='' ORDER BY exam.Centre";

$stmt = $db->prepare($sql);

/* 実行 */ $stmt->execute(array($level));

/* Fetch */
            $row = $stmt->fetch(PDO::FETCH_ASSOC);    





/*  Display  */
                    echo '<table>
                         <tr>
                    <td>Name</td>
                    <td>Surname</td>
                    <td>Paid?</td>
                    <td>Etc</td>
                    <td>Etc</td>
                    <td>Etc</td>
                        </tr>';

if ($row) { foreach ($row as $key => $value)

              {
                echo '<td>';
                echo $value;
                echo '</td>';
            }
               echo '</tr>';
          }
       echo '</table>';
4

2 に答える 2

3

それを正しく理解するための簡単なチュートリアル。

  1. 動作するmysqlクエリを取得します

     $sql = "SELECT * FROM t WHERE a = $a AND b = '$b'";
    
  2. 動作することを確認してください。そうでない場合は、最初に機能させます。
  3. 補間するすべての変数を (スラッシュ引用符を含む、対応するすべての書式と共に) 取り出し、それらの代わりに疑問符を付けます。

     $sql = "SELECT * FROM t WHERE a = ? AND b = ?";
    
  4. これらの変数をexecute()配列の形式で移動します

     $sql = "SELECT * FROM t WHERE a = ? AND b = ?";
     $stm = $db->prepare($sql);
     $stm->execute(array($a,$b));
    
  5. すべてが機能します。

  6. それでも解決しない場合は、エラーがあればそれを確認するために PDO と PHP を構成し、エラー メッセージを読んで適切なアクションを実行してください。

データを適切な形式で取得するには、適切なフェッチ メソッドを使用する必要があります。

     $data = $stm->fetchAll();
     foreach ($data as $row) {
       echo $row['id'];
       // do whatever
     }

その他の方法はタグwikiを参照してください

于 2013-05-17T10:26:31.683 に答える