编辑:这是关于范围的重复关闭,但问题实际上是关于我在SQL查询中使用(或缺少)撇号。范围不正确,但不是导致我的问题的原因。我很高兴删除或重新打开解决方案。
以下代码工作正常,并显示一个漂亮的HTML表:
$link = mysqli_connect($host, $username, $password, $db_name);
$round = 1;
$result = mysqli_query($link,"SELECT car.carID, car.team, result.cost FROM result INNER JOIN car ON car.carID=result.carID WHERE result.roundID=$round AND car.class='LMP1'");
echo "<h1>" . 'LMP1' . "</h1>
<table border='1'>
<tr>
<th>Car</th>
<th>Team</th>
<th>Cost</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['carID'] . "</td>";
echo "<td>" . $row['team'] . "</td>";
echo "<td>" . $row['cost'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($link);
但是当我将它包装在一个函数中时,我得到了表头并没有数据:
function displayClassCosts($class) {
$link = mysqli_connect($host, $username, $password, $db_name);
$round = 1;
$result = mysqli_query($link,"SELECT car.carID, car.team, result.cost FROM result INNER JOIN car ON car.carID=result.carID WHERE result.roundID=$round AND car.class=$class");
echo "<h1>" . $class . "</h1>
<table border='1'>
<tr>
<th>Car</th>
<th>Team</th>
<th>Cost</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['carID'] . "</td>";
echo "<td>" . $row['team'] . "</td>";
echo "<td>" . $row['cost'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($link);
}
displayClassCosts('LMP1');
displayClassCosts('LMP2');
displayClassCosts('GTE_Pro');
displayClassCosts('GTE_Am');
唯一的区别是查询条件中的硬编码字符串和第一个版本中的H1标记与使用传递的变量。
欢迎提示!
答案 0 :(得分:0)
当包含在函数中时,您将从何处获取数据库连接的变量$host, $username, $password, $db_name
您可以在函数中使用global
关键字来使用这些变量。
function displayClassCosts($class) {
global $host, $username, $password, $db_name;
.
.
}
另一种方法是将它们作为参数传递。
function displayClassCosts($class, $host, $username, $password, $db_name) {
.
.
}