无法让PDO SQL查询工作

时间:2013-05-16 17:06:15

标签: php sql pdo

我无法使此查询生效。它只显示第一个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->执行(阵列($级));

/* 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 =&gt; $ value)

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

2 个答案:

答案 0 :(得分: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. 如果仍然没有 - configure your PDO and PHP in order to see errors if any,请阅读错误消息并采取相应措施。
  7. 要以正确的格式获取数据,您必须使用正确的获取方法

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

    请参阅tag wiki for other methods

答案 1 :(得分:0)

我也是PDO的新手,但是从你的代码中我发现查询中没有:centre,所以该参数不会绑定?

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