Mysql &引用;SQLSTATE[HY000]:一般错误;在Zend框架中

Mysql &引用;SQLSTATE[HY000]:一般错误;在Zend框架中,mysql,zend-framework,zend-db,Mysql,Zend Framework,Zend Db,我已经在Zend框架中工作了一年多了,但我从未遇到过这个问题。 我正在本地机器上开发,运行PHP5.2、Zend Framework 1.11.4和MySQL 5。这一切都是在Ubuntu 10.04上运行Apache2 我的代码正在尝试向数据库中添加权限记录。这是我的密码: protected function _add($resource, $description) { $this->_sql = 'INSERT INTO Permissions (id, resource,

我已经在Zend框架中工作了一年多了,但我从未遇到过这个问题。 我正在本地机器上开发,运行PHP5.2、Zend Framework 1.11.4和MySQL 5。这一切都是在Ubuntu 10.04上运行Apache2

我的代码正在尝试向数据库中添加权限记录。这是我的密码:

protected function _add($resource, $description)
{
    $this->_sql = 'INSERT INTO Permissions (id, resource, description)
                    VALUES (NULL, :resource, :description)';
    $this->_params = array(
            ':resource' => $resource,
            ':description' => $description
    );
    $this->_query = $this->_db->prepare($this->_sql);
    $this->_query->execute($this->_params);
    $this->_result = $this->_query->fetchAll();
    if(count($this->_result) != 1) {
        return false;
    }
    return $this->_result[0];
}
异常抛出发生在“$this->\u result=$this->\u query->fetchAll();”行上,返回的消息只是“SQLSTATE[HY000]:常规错误”。就这样。没有错误号码或任何东西。只是一般的错误。 但是,当我检查权限表时,记录已成功添加。WTF

我一直在谷歌上搜索答案,但我没有找到任何解决问题的方法。
有什么想法吗?

id
是你的主键吗?许多RDBMS不允许PK使用
NULL
,因此此RDBMS必须失败

更新: 我明白了,mySQL允许
NULL
用于
PK AI
。然而,我会省略它


我还看到它是一个
INSERT
-语句,这样的东西(afair)不会返回任何东西。也许(只是一个猜测;))您正在寻找的是?

id
是您的PK吗?许多RDBMS不允许PK使用
NULL
,因此此RDBMS必须失败

更新: 我明白了,mySQL允许
NULL
用于
PK AI
。然而,我会省略它

我还看到它是一个
INSERT
-语句,这样的东西(afair)不会返回任何东西。也许(只是一个猜测;)你正在寻找答案

而不是

$this->_result = $this->_query->fetchAll();
我应该早点发现的

而不是

$this->_result = $this->_query->fetchAll();

我应该早就发现了这个问题。

[$this->\u sql='插入权限(resource,description)值(:resource,:description);]]行更改可以解决您的问题,正如kingcrunch所述。只有当
id
定义为
PK AI
(很可能;)id是PK,但这是MySQL,id字段设置为自动递增,所以如果我传递null。。。它只是插入PK的下一个值。插入权限(资源,描述)值(:资源,:描述)输入按钮。。。插入权限(资源,描述)值(:资源,:描述)未修复此问题。。。我在想,在Zend中,我无法对插入进行fetchAll。这是有道理的。我会在测试后更新这篇文章。[[$this->\u sql='插入到权限(resource,description)值(:resource,:description);]]行更改将修复您的问题,正如kingcrunch所述。只有当
id
定义为
PK AI
(很可能;)id是PK,但这是MySQL,id字段设置为自动递增,所以如果我传递null。。。它只是插入PK的下一个值。插入权限(资源,描述)值(:资源,:描述)输入按钮。。。插入权限(资源,描述)值(:资源,:描述)未修复此问题。。。我在想,在Zend中,我无法对插入进行fetchAll。这是有道理的。我会在测试后更新这篇文章。