我们在其中一个网页的HTML中有以下代码.我们尝试使用下面的PHP代码中显示的MySQL调用和while循环显示数据库中的所有Wifi速度和GPS位置.但是,它不会向页面返回任何内容.我们将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>
Run Code Online (Sandbox Code Playgroud)
这行不正确,是AND:
$data = "(SELECT Wifi_speed AND GPS_location FROM Instance)";
^^^
Run Code Online (Sandbox Code Playgroud)
将其更改为并使用逗号作为列选择器:
$data = "(SELECT Wifi_speed, GPS_location FROM Instance)";
Run Code Online (Sandbox Code Playgroud)
但是,您应该从查询中删除括号:
$data = "SELECT Wifi_speed, GPS_location FROM Instance";
Run Code Online (Sandbox Code Playgroud)
使用:
$results = mysql_query($data, $dbc) or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
会发出语法错误的信号.但是,您应该在测试期间使用它来查看查询中是否存在实际错误.
边注:
AND用于a中的WHERE子句SELECT.即:
SELECT col FROM table WHERE col_x = 'something' AND col_y = 'something_else'
Run Code Online (Sandbox Code Playgroud)
或者UPDATE,即:
UPDATE table SET col_x='$var1'
WHERE col_y='$var2'
AND col_z='$var3'
Run Code Online (Sandbox Code Playgroud)
脚注:
考虑mysqli使用预准备语句或带有预准备语句的PDO,因为mysql_函数已弃用,将从未来的PHP版本中删除.
将错误报告添加到文件的顶部,这将有助于查找错误.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
Run Code Online (Sandbox Code Playgroud)
旁注:错误报告应该只在暂存中完成,而不是生产.
"谢谢你的建议,但我们尝试过,它没有改变任何东西. - sichen"
mysqli_PDO或PDO.参考文献: