使用PDO打印两次MYSQL查询的结果

时间:2013-07-16 10:09:41

标签: php mysql pdo

我是老师,我有一个叫做'gabber'的mysql表,里面有很多学生测验。字段是'Exercise','realname,'Score','Start_Time'和'End_Time'。如果学生完成多种类型的测验,那么这将显示为表格中的另一行,但当然具有不同的练习值。

我的下面的代码,几乎可以工作,首先找到唯一的练习值,并使用它们来打印表格列标题。这些独特的运动值也用于创建第二个查询,该查询查找每个学生在每个测验中尝试的最小(即第一次尝试)分数。

无论如何,php代码使用EXCEPT来打印每个值两次。即,每个分数打印两次名称。我知道我的查询肯定是正确的(在phpmyadmin中测试),但我认为在嵌套for循环中出现问题。我试过阅读查询返回的PDOstatement,但我无法理解。我很欣赏stackoverflower上有关于“打印两次”的其他帖子,但他们无法帮我解决这个问题。

关于如何完成这项工作的任何建议都会很棒。谢谢,马特。

<?
$dbh = new PDO("mysql:host=XXX;dbname=gabber", user, pass);
$query2 = "SELECT realname";

echo '<style>table{border-collapse:collapse;}';
echo 'table, td, th{border:1px solid black;}</style>';
echo '<table><tr><td></td>';

foreach($dbh->query('SELECT DISTINCT Exercise FROM a2_physics') as $row) {
    echo '<td>';
    echo $row[0];
    echo '</td>';
    $query2.=', MIN( IF( Exercise = "';
    $query2.=$row[0];
    $query2.='", Score, NULL ) ) AS "';
    $query2.=$row[0];
    $query2.='"';
    }
echo '</tr>';

$query2=$query2.' FROM a2_physics';
$query2=$query2.' GROUP BY realname';

//echo $query2;
foreach($dbh->query($query2) as $row) {
echo '<tr>';
foreach($row as $element)
{
echo '<td>';
echo $element;
echo '</td>';
}
echo '</tr>';
}
echo '</table>';
?>

1 个答案:

答案 0 :(得分:2)

连接到PDO时,请按照这种方式执行

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn, $user, $pass, $opt);