我有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
dtDuration
(dtFirstName
dt LastName
)如果可能,这个2在一个表格中“。”
目前我只是尝试连接其中两个tblTaskDuration
和tblTask
:
这是我使用的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
我该怎么办?
提前谢谢。
我使用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>";
}