2

次のクエリを実行しようとしています。

$query = "SELECT O. * AS NUM FROM (ab_order O)
    LEFT JOIN ab_user U ON (O.id_user=U.id)
    WHERE O.id IN ( SELECT OT.id_ab_order FROM ab_order_transaction OT
        LEFT JOIN ab_transaction T ON (OT.id_ab_transaction = T.id)
    LEFT JOIN ab_user U ON (T.id_user = U.id) 
    WHERE T.validated = 1 {$condTrans} ) {$condOrder}
    ORDER BY {$orderCol} LIMIT $from, $numRecords ";
$queryDB = $DB->queryExec($query);

ライブサーバー上:

  • MySql バージョン 3.3.10 で動作します。
  • PHP バージョン 5.2.17。

しかし、localhost を使用する必要があります。

  • Linux 用 XAMPP、v. 1.7.7
  • PHP5.3.8
  • MySQL バージョン 5.5.16。

ローカルホストでは次のように書かれています:

MySQL error: 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS NUM
FROM (ab_order O)
LEFT JOIN ab_u' at line 1.

ライブサーバーMysqlデータベースをアップグレードするより簡単な方法はありますか?

4

2 に答える 2

2

すべての列のエイリアシングが正しくないようです: SELECT O. * AS NUM. 以前のバージョンで機能する理由はわかりas numませんが、を削除するか、各列に明示的にエイリアスを設定する必要があります。

于 2012-05-22T18:27:18.907 に答える
1

SELECT で個々の列のエイリアスを定義できます。これが問題です

SELECT O. * AS NUM

この使用の代わりに

SELECT O. * 

これは便利な記事です。 SELECT ステートメントでの列エイリアスの使用

于 2012-05-22T18:33:57.857 に答える