0

私はこの基本的なクエリを持っています:

SELECT d.description, o.code FROM order_positions AS o
LEFT JOIN article_descriptions AS d ON (o.article_id = d.article_id)
WHERE o.order_id = 1

from を使用MDB2PEARて実行し、戻り値を読み取ります。

しかし、どういうわけか、結果の配列には常にorder_positionsテーブルのフィールドのみが含まれます!つまり、結果の配列は次のようになります。

row[code] = 'abc123'

こうなりたいと思いながら

row[description] = 'my description'
row[code] = 'abc123'

私はすでに次のことを試しました:

  • フィールドの順序を変更します。つまり、code最初に、次にdescription.
  • 結合されたテーブルの順序を変更します。
  • エイリアスの代わりに完全なテーブル名を使用しました。
  • 代わりに「MySQL 結合」を使用しました ( SELECT FROM table1, table2 WHERE table1.id = table2.id)
  • の有無にかかわらず使用されるエイリアスAS

その他の事実:

  • このクエリを MySQL Query Browser で実行すると問題なく動作し、すべてのフィールドが返されます。
  • order_positions何があっても、テーブルが好まれているようです。追加のテーブルと結合すると、このテーブルからのみフィールドが取得されます。
4

3 に答える 3

1

OK、私は原因を見つけました:

値を持つフィールドNULLは配列に追加されません。私のテスト シナリオdescriptionでは、実際には null であったため、配列で使用できませんでした。

将来誰かがこの問題を抱えた場合に備えて、この(恥ずかしい)質問を続けます。

フェイスパーム http://www.scienceblogs.de/frischer-wind/picard-facepalm-thumb-512x409.jpg

于 2009-09-29T14:26:36.077 に答える
0

これはうまくいくはずです:

SELECT d.description, o.code 
FROM order_positions o, article_descriptions d 
WHERE o.order_id = 1 AND d.article_id = o.article_id
于 2009-09-29T13:13:03.090 に答える
0

fetchOne()の代わりに誤って使用していませんfetchRow()か?

PHPコードを投稿できますか?

もう 1 つの可能性は、コードでカンマを逃したことです。

SELECT a b

と同じです

SELECT a AS b
于 2009-09-29T13:13:12.947 に答える