我们的一个网页的 HTML 中有以下代码。我们正在尝试使用 MySQL 调用和 while 循环来显示数据库中的所有 Wifi 速度和 GPS 位置,如下面的 PHP 代码所示。但是,它不会向页面返回任何内容。我们将 echo 语句放在 PHP 的各个部分中(例如,在 while 循环之前、数据库内容之前),它甚至不会将这些语句打印到网页上。
<body>
<h2>WiFi Speeds in the System</h2>
<p>Speeds Recorded in the System</p>
<?php
$username = "root";
$password = "";
$hostname = "localhost";
$dbc = mysql_connect($hostname, $username, $password)
or die('Connection Error: ' . mysql_error());
mysql_select_db('createinsertdb', $dbc) or die('DB Selection Error' .mysql_error());
$data = "(SELECT Wifi_speed AND GPS_location FROM Instance)";
$results = mysql_query($data, $dbc);
while ($row = mysql_fetch_array($results)) {
echo $row['Wifi_speed'];
echo $row['GPS_location'];
}
?>
</body>
最佳答案
这一行不正确,是 AND
:
$data = "(SELECT Wifi_speed AND GPS_location FROM Instance)";
^^^
将其更改为并使用逗号作为列选择器:
$data = "(SELECT Wifi_speed, GPS_location FROM Instance)";
但是,您应该从查询中删除括号:
$data = "SELECT Wifi_speed, GPS_location FROM Instance";
使用:
$results = mysql_query($data, $dbc) or die(mysql_error());
会表示语法错误。然而,您应该在测试期间使用它来查看查询中是否确实存在错误。
旁注:
AND
用于SELECT
中的WHERE
子句。
即:
SELECT col FROM table WHERE col_x = 'something' AND col_y = 'something_else'
或者对于更新
,即:
UPDATE table SET col_x='$var1'
WHERE col_y='$var2'
AND col_z='$var3'
脚注:
考虑转移到 mysqli
with prepared statements ,或PDO with prepared statements ,因为 mysql_
函数已被弃用,并将从 future 的 PHP 版本中删除。
添加error reporting到文件顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告只能在暂存阶段完成,而不能在生产阶段完成。
"Thank you for the suggest but we tried that and it didn't change anything. – sichen"
- 您可能会发现您可能最终无法使用这些功能。如果是这种情况,那么您将需要切换到
mysqli_
或 PDO。
引用文献:
关于PHP 变量不打印到 HTML 网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29909337/