0

OK、AMFPHP は初めてです。問題なく簡単なSQL文を実行できます。

ここに私の学校と場所のクラスがあります:

class Schools {

public $id;
public $district_id;
public $school_name;

// explicit actionscript class
var $_explicitType = "components.Schools";
}

class Locations {

public $id;
public $school_id;
public $school_address;
public $icon_id;

// explicit actionscript class
var $_explicitType = "components.Locations";
}

この単純な sql ステートメントは問題なく動作します。

    /**
* Retrieves schools data
* @returns id, district_id, school_name
*/

public function getSchools() {
    //connect to the database.
    $mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);
    mysql_select_db(DATABASE_NAME);
    //retrieve all rows
    $query = "SELECT * FROM schools ORDER BY school_name";
    $result = mysql_query($query);

    $ret = array();
    while ($row = mysql_fetch_object($result)) {
        $tmp = new Schools();
        $tmp->id = $row->id;
        $tmp->district_id = $row->district_id;
        $tmp->school_name = $row->school_name;
        $ret[] = $tmp;
    }
    mysql_free_result($result);
    return $ret;
}

ただし、「やや」複雑なSQLステートメントを適切に機能させるのに苦労しています。

    /**
* Retrieves schools with locations data
* @returns school_name, school_address
*/

public function getSchoolsLocations() {
    //connect to the database.
    $mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);
    mysql_select_db(DATABASE_NAME);
    //retrieve all schools with their locations
    $query = "SELECT schools.school_name AS SNAME, school_address AS SLOC FROM schools, locations WHERE schools.id = locations.school_id";
    $result = mysql_query($query);

    $ret = array();
    while ($row = mysql_fetch_object($result)) {
        $tmp = new Schools();
        $tmp->id = $row->id;
        $tmp->school_name = $row->SNAME;
        $ret[] = $tmp;

        $tmp2 = new Locations();
        $tmp2->school_id = $row->school_id;
        $tmp2->school_address = $row->SLOC;
        $ret2[] = $tmp2;

        array_splice($ret, count($ret), 0, $ret2);
    }
    mysql_free_result($result);
    return $ret;
}

ところで、SELECT schools.school_name AS SNAME, school_address AS SLOC FROM schools, locations WHERE schools.id = locations.school_idmysqlで完全に動作します。

4

1 に答える 1

0

$ret2を宣言しているようには見えません。

FWIW:クエリを結合としてフォーマットすると、クエリのパフォーマンスが向上する可能性があります。ちょっとした考え。

于 2011-11-17T23:41:42.533 に答える