1

この質問を投稿する前に、SOで罰金を科すことができるすべての回答を読みました。同様ですが、私の特定の問題に対処したものはありませんでした(または、そうしていることに気づきませんでした)。

Zend_Db_Table_Abstractを拡張するテーブルクラスがあります。モデルでは、join()メソッドを使用し、次のようなテーブルIDに基づいて単一の行を返そうとしています。

        $getCategoryResults = $this->select();
        $getCategoryResults->setIntegrityCheck(false)
                           ->from(array('c'=> 'categories', '*'))
                           ->join(array('e' => 'events'),'c.events_idEvent = e.idEvent', array())
                            ->where("e.idEvent = ?", $idEvent);

SQLオブジェクトをエコーすると、次のようになります。

SELECT `c`.* FROM `categories` AS `c` 
INNER JOIN `events` AS `e` ON c.events_idEvent = e.idEvent 
WHERE (e.idEvent = '1')

奇妙なことに、この形式を使用すると、

->where("e.idEvent = $idEvent");

私の出力は「WHERE(e.idEvent = 1)」です。値は目盛りで囲まれていませんが、どちらもMySQLで機能するようです。phpMyAdminでクエリを実行すると、次のようになります。

idCategoryタイプdisplayOrder説明localStartTimeevents_idEvent1
個人15k実行/ウォーク2010-02-1823 :59:5912チーム25k
チームカテゴリ2010-02-1823:59:591 1

それは私が見たいと思っていたものです。しかし、ブラウザでアプリを実行すると、次のような醜さが発生します。

SQLSTATE [42000]:構文エラーまたはアクセス違反:1064SQL構文にエラーがあります。c1行目の「SELECT 。* FROMAS INNER JOIN categoriesAS ON c.events_id」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。ceventse

考えられるすべてのリソースを確認しました。うまくいけば、SO超専門家の組み合わせの素晴らしさがこれを私の最後の目的地にするでしょう。:D

4

2 に答える 2

1

エラー ステートメントの 2 番目の部分を確認してください。ほとんどの場合、mysql が他の場所にある場合はアクセス違反に関するものです。

于 2010-02-05T15:52:49.720 に答える
1

理由は不明ですが、アプリは $pageResult 変数が設定されていないと認識していました。次のようなコードに isset() を追加した後、これを発見しました。

        try {
        $getCategoryResults = $this->select();
        $getCategoryResults->setIntegrityCheck(false)
                           ->from(array('c'=> 'categories', '*'))
                           ->join(array('e' => 'events'),'c.events_idEvent = e.idEvent', array())
                            ->where("e.idEvent = ?", $idEvent);

          if (isset($pageResult)) {
            $pageResult .= $getCategoryResults;
          }
          else {
            $pageResult = $getCategoryResults;
          }

    } catch (Exception $e) {
        echo ( "Could not find matching categories for event id = $idEvent");
    }

問題が解決したことで、もちろん、その背後に潜んでいる次の問題が明らかになりました。:D

于 2010-02-05T19:14:15.193 に答える