0

我无法让这个查询工作。它只显示第一个数据库条目。任何想法都非常感谢。

/* 准备 */

$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 以查看错误(如果有),请阅读错误消息并采取适当的措施。

要以正确的格式获取数据,您必须使用正确的 fetch 方法

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

其他方法请参考标签wiki

于 2013-05-17T10:26:31.683 回答
0

我也是 PDO 的新手,但是从您的代码中我注意到那里:centre的查询中没有,所以该参数不会绑定?

另一件事是WHERE exam.Level:level,你确定你的意思是这个而不是:WHERE exam.Level = :level

于 2013-05-16T17:12:57.930 回答