MySQL的Zend框架 - SQLSTATE [42000]:语法错误或访问冲突:1064(My

2019-10-19 10:00发布

我读过的每一个反应,使张贴了这个问题之前,我可以罚款。 虽然类似,但没有解决我的具体问题(或我不认识他们这样做)。

我有一个扩展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描述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

Answer 1:

检查出错误声明的第二部分。 最有可能的是如果MySQL有关的其他地方访问冲突。



Answer 2:

不知什么原因对我来说,应用相信我的$ 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



文章来源: MySQL Zend Framework - SQLSTATE[42000]: Syntax error or access violation: 1064