2

同じフィールドを持つ 3 つのテーブルを持つデータベースがあります。コンテンツを表示しようとしていますが、2 つの問題が発生しています。これがPHPファイルの内容です。誰か助けてくれませんか?

問題 1: 1 つのテーブルのみが表示さ
れる 問題 2: すべてのテーブルを追加し、どのテーブルにもデータがない場合、出力はNULL

(追加しようとしまし$query = "SELECT * FROM main_office,second_office,third_office";たが、うまくいきませんでした。)

<?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; 

?>
4

1 に答える 1

1

操作が必要だと思いますunion all

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

これにより、すべての行が一緒に追加されます。元のバージョンは、テーブルのデカルト積を行っていました。つまり、出力は 3 つのテーブルすべてのすべての行のすべての組み合わせで構成されていました。したがって、合計行出力は、3 つのテーブルの行の積になります。また、1 つのテーブルに行がないということは、行が出力されないことを意味します。

于 2013-08-07T02:29:11.747 に答える