我无法使此查询生效。它只显示第一个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>';
答案 0 :(得分:3)
一个简单的教程,让你做对。
使用有效的mysql查询
$sql = "SELECT * FROM t WHERE a = $a AND b = '$b'";
取出插入的每个变量(以及所有相应的格式,包括斜杠和引号),然后放入代替他们的问号。
$sql = "SELECT * FROM t WHERE a = ? AND b = ?";
以数组
的形式将这些变量移动到execute()
$sql = "SELECT * FROM t WHERE a = ? AND b = ?";
$stm = $db->prepare($sql);
$stm->execute(array($a,$b));
一切正常。
要以正确的格式获取数据,您必须使用正确的获取方法
$data = $stm->fetchAll();
foreach ($data as $row) {
echo $row['id'];
// do whatever
}
答案 1 :(得分:0)
我也是PDO的新手,但是从你的代码中我发现查询中没有:centre
,所以该参数不会绑定?
另一件事是WHERE exam.Level:level
,你确定你的意思是这样而不是:WHERE exam.Level = :level
?