我有一个简单的数据库,我每隔10到30分钟用来存储我的游泳池温度和室外温度。我遇到的问题是我拥有的代码我可以在MySQL本地运行查询,它工作得很好。但是当我在PHP中使用相同的查询时,它会给我一个空白页面。
<?php
$dbhost = "localhost";
$dbuser = "xxxx";
$dbpass = "xxxxxxxxxx";
$dbname = "pool_db";
// Create connection
$conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname) or die("Error " .mysqli_error($conn));
$sql = "SELECT * FROM tempLog ORDER BY dateTime DESC";
$results = mysqli_query($conn, $sql) or die("Error " .mysqli_error());
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
while($row = mysqli_fetch_array($results)); {
?>
<p><?php echo $row['poolTemp'];?></p>
<?php
}
?>
</body>
</html>
答案 0 :(得分:4)
这一行是分号:
while($row = mysqli_fetch_array($results)); {
^ end of statement character
它只会在那里杀死它并且会无声地失败,反过来会给你一个空白的屏幕; 将其删除。
与在C或Perl中一样,PHP要求在每个语句结尾处以分号结束指令。 PHP代码块的结束标记自动表示分号;你不需要一个分号来终止PHP块的最后一行。块的结束标记将包括紧接着的新行(如果存在)。
$row['poolTemp']
。我自己的测试:
[空白屏幕] - 带分号
<?php
$link = mysqli_connect('xxx','xxx','xxx', 'xxx');
if (!$link) {
die('Could not connect to MySQL: ' . mysqli_error());
}
echo 'Connection OK';
echo "<hr>";
$sql = mysqli_query($link,"SELECT * FROM table");
while($row = mysqli_fetch_assoc($sql));{
// ^ with semi-colon
echo $row['col1'] . " " . $row['col2'] . "<br>";
}
mysqli_close($link);
?>
[结果显示] - 没有分号
<?php
$link = mysqli_connect('xxx','xxx','xxx', 'xxx');
if (!$link) {
die('Could not connect to MySQL: ' . mysqli_error());
}
echo 'Connection OK';
echo "<hr>";
$sql = mysqli_query($link,"SELECT * FROM table");
while($row = mysqli_fetch_assoc($sql)) {
// ^ no semi-colon
echo $row['col1'] . " " . $row['col2'] . "<br>";
}
mysqli_close($link);
?>
答案 1 :(得分:-1)
将mysqli_fetch_array
更改为mysqli_fetch_row
。另外,对于奖励积分,请自己帮忙并echo
段落标记,这样您就可以避免分解所有代码。