2013-08-07 6 views
1

У меня есть база данных с тремя таблицами с одинаковыми полями. Я пытаюсь получить его для отображения содержимого, но у меня есть два вопроса. Вот что находится в файле PHP. Кто-то может помочь?MYSQL & PHP Отображение данных из нескольких таблиц

Выпуск 1: Только одна таблица показывает
Выпуск 2: (. Я пытался добавить $query = "SELECT * FROM main_office,second_office,third_office";, но это не сработало) Если добавить все таблицы и все имеют никаких данных из положить не NULL

<?php 
    class Location { 
     public $address; 
     public $city; 
     public $us_state; 
     public $zip; 
     public $longitude; 
     public $latitude; 

    public function setAddress($address) { 
     $this->address = $address; 
    } 
    public function setCity($city) { 
     $this->city = $city; 
    } 
    public function setState($us_state) { 
     $this->us_state = $us_state; 
    } 
    public function setZip($zip) { 
     $this->zip = $zip; 
    } 
    public function setLongitude($longitude) { 
     $this->longitude = $longitude; 
    } 
    public function setLatitude($latitude) { 
     $this->latitude = $latitude; 
    } 
    } 

header('content-type: application/json; charset=utf-8'); 

require 'config.php'; 

    $db_server = mysql_connect($db_hostname, $db_username, $db_password); 
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error()); 
mysql_select_db($db_database) or die("Unable to select database: " . mysql_error()); 

$query = "SELECT * FROM main_office"; 
mysql_query("SET NAMES utf8"); 
$result = mysql_query($query); 
if (!$result) die ("Database access failed: " . mysql_error()); 

$rows = mysql_num_rows($result); 

for ($j = 0 ; $j < $rows ; ++$j) 
{ 
    $row = mysql_fetch_row($result); 
    $location[$j] = new Location; 
    $location[$j]->setAddress($row[5]); 
    $location[$j]->setCity($row[6]); 
    $location[$j]->setState($row[7]); 
    $location[$j]->setZip($row[8]); 
    $location[$j]->setLongitude($row[9]); 
    $location[$j]->setLatitude($row[10]); 
} 

$json_string = json_encode($location); 
echo $json_string; 

?> 
+0

Не повторяйте, не повторяйте, используйте интерфейс mysql_ *. Переключитесь на mysqli или PDO. Он устарел и ушел в последнюю версию PHP. –

ответ

0

Я думаю, что вы хотите union all операцию:

SELECT * 
FROM main_office 
union all 
select * 
from second_office 
union all 
select * 
from third_office; 

Это добавляет все строки вместе. Ваша оригинальная версия делала декартово произведение таблиц. То есть вывод состоял из всех комбинаций всех строк из всех трех таблиц. Таким образом, общий вывод строк будет продуктом строк в трех таблицах. И ни одна строка в одной таблице не означает, что строки не выводятся.

+0

Спасибо за вашу помощь, которая его исправила. – user2659008

Смежные вопросы