簡體   English   中英

無法使PDO SQL查詢正常工作

[英]Can't get PDO SQL query to work

我無法使該查詢正常工作。 它僅顯示第一個數據庫條目。 任何想法表示贊賞。

/* 准備 */

$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>';

一個簡單的教程,供您正確使用。

  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
     }

其他方法請參考標簽維基

我也是PDO的新手,但是從您的代碼中,我注意到那里的查詢中沒有:centre ,因此該參數不會綁定?

另一件事是WHERE exam.Level:level ,您確定不是這個意思嗎? WHERE exam.Level = :level嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM