【问题标题】:Query runs fine in SQL, but shows empty table in PHP查询在 SQL 中运行良好,但在 PHP 中显示空表
【发布时间】:2012-01-12 17:26:29
【问题描述】:

我很难将 mysql 数据库中的数据显示到 PHP 生成的表中。有趣的是,下面显示的查询在 SQL 中运行良好,但是当我尝试将其包装在 PHP 中时,它显示空表而没有给出任何错误。

SELECT city.name, cinema.name, whattime, whichdate
FROM city, cinema, relationship
WHERE cinema.city = city.id
AND cinemaid = cinema.id
ORDER BY whichdate

这是 PHP 代码:

<?php
$usr = "admin";
$pwd = "";
$db = "dbname";
$host = "localhost";

$con = mysql_connect($host, $usr, $pwd) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());

$sql = "select city.name, cinema.name, whichdate, whattime ";
$sql .= "from city, cinema, relationship ";
$sql .= "where cinema.city = city.id ";
$sql .= "and cinemaid = cinema.id ";
$sql .= "order by whichdate";
$query = mysql_query($sql, $con) or die(mysql_error()); 

echo "<table id='premiere'>";
echo "<tr> <th>CITY</th> <th>CINEMA</th> <th>DATE</th> <th>TIME</th></tr>";
 while($result = mysql_fetch_array( $query )) {
    echo "<tr><td>"; 
    echo $result['city.name'];
    echo "</td><td>"; 
    echo $result['cinema.name'];
    echo "</td><td>";
    echo $result['relationship.whichdate'];
    echo "</td><td>";
    echo $result['relationship.whattime'];
    echo "</td></tr>";
}
echo "</table>";    
?>

任何帮助将不胜感激。

【问题讨论】:

  • 你检查过mysql_error()的结果了吗?您是否尝试过一个您知道会返回结果的更简单的查询,例如“select 1;”?尝试使用 mysqli 而不是 mysql 函数。

标签: php mysql sql html-table


【解决方案1】:

您获取的数组不会包含表名作为数组键,只有列名(如$result['whichname']

使用city.namecinema.name 的列别名来区分它们。

$sql = "select city.name AS cityname, cinema.name AS cinemaname, whichdate, whattime ";
//--------------------^^^^^^^^^^^^^^^------------^^^^^^^^^^^^^^^
$sql .= "from city, cinema, relationship ";
$sql .= "where cinema.city = city.id ";
$sql .= "and cinemaid = cinema.id ";
$sql .= "order by whichdate";

然后,而不是:

while($result = mysql_fetch_array( $query )) {
    echo "<tr><td>"; 
    echo $result['city.name'];
    echo "</td><td>"; 
    echo $result['cinema.name'];
    echo "</td><td>";
    echo $result['relationship.whichdate'];
    echo "</td><td>";
    echo $result['relationship.whattime'];
    echo "</td></tr>";
}

仅使用列名(或别名)作为数组键:

while($result = mysql_fetch_array( $query )) {
    echo "<tr><td>"; 
    echo $result['cityname'];
    echo "</td><td>"; 
    echo $result['cinemaname'];
    echo "</td><td>";
    echo $result['whichdate'];
    echo "</td><td>";
    echo $result['whattime'];
    echo "</td></tr>";
}

【讨论】:

  • 感谢您的快速响应!但如果我在前两个 中写“名称”,那么结果将是相同的 - 在显示电影名称的两列中。我必须在第一列中获取城市名称,而电影院名称在第二列。有任何想法吗?谢谢!
  • @bojar 你看到上面的第一部分了吗?使用列别名city.name AS cityname, cinema.name AS cinemaname。确保您已刷新页面以查看最近的编辑
猜你喜欢
相关资源
最近更新 更多
热门标签