查询数据在MySQL本地显示,但PHP中的查询为空

时间:2015-04-30 03:11:06

标签: php mysql

我有一个简单的数据库,我每隔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>

2 个答案:

答案 0 :(得分:4)

这一行是分号:

while($row = mysqli_fetch_array($results)); {
                                          ^ end of statement character

它只会在那里杀死它并且会无声地失败,反过来会给你一个空白的屏幕; 将其删除

  • 这是一个不会引发错误的有效字符。因此,使用错误报告是徒劳的。
  

与在C或Perl中一样,PHP要求在每个语句结尾处以分号结束指令。 PHP代码块的结束标记自动表示分号;你不需要一个分号来终止PHP块的最后一行。块的结束标记将包括紧接着的新行(如果存在)。

  • 此处的关键字为&#34;已终止&#34;。
  • 另外请确保您实际上有一行名为&#34; poolTemp&#34; $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段落标记,这样您就可以避免分解所有代码。