如何使用包含外键的查询创建html表?

时间:2015-01-08 16:49:18

标签: php html mysql foreign-keys syntax-error

我有3个MySQL表

tblTask 
 idTask           (id)
 dtTask
 dtDescription
 dtRefNbr
 fiUser           (Foreign key)
 fiDuration       (Foreign key)

tblTaskDuration 
 idTaskDuration    (id)
 dtTaskDuration

tblUser
 idUser            (id)
 dtUser
 dtPassword
 dtFirstName
 dtLastName

我想创建一个显示以下内容的HTML表:

dtTask dtDescription dtRefNbr dtDurationdtFirstName dt LastName)如果可能,这个2在一个表格中“。”

目前我只是尝试连接其中两个tblTaskDurationtblTask

这是我使用的PHP函数:

function SelectTask() {
    $querySQL = "SELECT TD.* FROM tblTaskDuration TD
                INNER JOIN tblTask T
                ON T.fiDuration=TD.idTaskDuration";
    $queryResult = GetQuery($querySQL);

    while ($row = mysqli_fetch_assoc($queryResult)) {
        $dataArrayTask[] = $row;
    }
    return $dataArrayTask;
}

这是GetQuery():

function GetQuery($query) {
// Connect to MySQL Database
    $dbc = new mysqli(HOST, USER, PASSWORD, DATABASE)
            or die('Error connecting to MYSQL server.' . mysqli_error($dbc));

    return mysqli_query($dbc, $query);
    mysqli_close($dbc);
}

这是HTML表格:

        <?php
        foreach (SelectTask() as $x) {
            echo "<tr>
                <th class='th01'>" . $x['dtTask'] . "</th>
                <th class='th02'>" . $x['dtDescription'] . "</th>
                <th class='th03'>" . $x['dtRefNbr'] . "</th>
                <th class='th03'>" . $x['dtDuration'] . "</th>
                <th class='th04'>" . $x['dtUser'] . "</th>
                </tr>";
        }
        ?>

我得到了这两个错误:

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\web\newproject\Includes\functions.php on line 55
NULL
Warning: Invalid argument supplied for foreach() in C:\web\newproject\admin.php on line 68

我该怎么办?

提前谢谢。

编辑:

这是awnser:

我使用INNER JOIN代替LEFT JOIN

  

LEFT JOIN关键字返回左表(table1)中的所有行,   使用右表(table2)中的匹配行。结果为NULL   在没有匹配的情况下在右侧。

W3School LEFT JOIN Description

E.g:

$querySQL = "SELECT * 
            FROM tblTask T
            LEFT JOIN tblTaskDuration TD               
            ON T.fiDuration=TD.idTaskDuration
            LEFT JOIN tblUser U 
            ON T.fiUser=U.idUser"; 

这里我确保绑定(JOIN)所有表。然后你只需要在foreach循环中显示你的结果:

E.g:

foreach (SelectTask() as $x) {
                    echo "<tr>
                        <th class='th01'>" . $x['dtTask'] . "</th>
                        <th class='th02'>" . $x['dtDescription'] . "</th>
                        <th class='th03'>" . $x['dtTaskDuration'] . "</th>
                        <th class='th03'>" . $x['dtRefNbr'] . "</th>                       
                        <th class='th04'>" . $x['dtFirstName'] . " " . $x['dtLastName'] . "</th>
                        </tr>";
                }

0 个答案:

没有答案