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

相关问题