1

我已經閱讀了所有回覆,我可以在發佈此問題之前處理此問題。雖然類似,但沒有解決我的特殊問題(或者我沒有認識到他們這樣做)。MySQL Zend Framework - SQLSTATE [42000]:語法錯誤或訪問衝突:1064

我有一個擴展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)」。該值不包含在tick中,但似乎對MySQL有效。當我運行在phpMyAdmin查詢,我得到這個:

idCategory型displayOrder描述localStartTime events_idEvent
1個人1 5K運行/步行2010-02-18 23時59分59秒1
2隊2 5K團隊分類2010-02-18 23:59:591 1

這是我期望看到的。但是當我在瀏覽器中運行我的應用程序時,出現以下錯誤:

SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法使用附近的手冊 'SELECT c。* FROM categories AS c INNER JOIN events AS e ON c.events_id' 在行1

我檢查每我能想到的資源。希望SO超級專家的完美結合將使我成爲最後一站。 :D

回答

1

查看錯誤陳述的第二部分。如果mysql在別的地方,最有可能是訪問衝突。

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

+2

你在原始問題中沒有提到pageresult變量。 很高興爲您效力,因爲我花了15分鐘時間試圖瞭解您遇到錯誤的原因,並且看不出有什麼問題。 當我累了時,我通常會想念這樣的事情。也許該休息一下了? :) – rvdavid 2010-02-05 23:26:30

相關問題