Запрос отлично работает в SQL, но показывает пустую таблицу в PHP - PullRequest
0 голосов
/ 04 декабря 2011

У меня проблемы с отображением данных из базы данных 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>";    
?>

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 04 декабря 2011

Ваш извлеченный массив не будет включать имена таблиц в качестве ключей массива, только имена столбцов (как в $result['whichname'])

Используйте псевдонимы столбцов для city.name и cinema.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>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...