我已经在Zend Framework工作了一年多了,但我从未遇到过这个问题。 我正在我的本地机器上运行PHP 5.2,Zend Framework 1.11.4和MySQL 5.这都是在Ubuntu 10.04上运行Apache 2
我的代码正在尝试向数据库添加权限记录。这是我的代码:
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-> _result = $ this-> _query-> fetchAll();”行上并且返回的消息只是“SQLSTATE [HY000]:一般错误”。而已。没有错误号或任何东西。只是一般错误。 但是,当我检查Permissions表时,记录已成功添加。 WTF?
我一直在谷歌搜索答案,但我找不到任何解决问题的方法。 有什么想法吗?
答案 0 :(得分:4)
$this->_result = $this->_db->lastInsertId();
而不是
$this->_result = $this->_query->fetchAll();
我应该早点发现那个。
答案 1 :(得分:3)
id
是你的PK?许多RDBMS不允许NULL
用于PK,因此这个必须失败。
更新:
我明白了,mySQL允许NULL
使用PK AI
。但是,我会省略它。 ;)
此外,我看到它的INSERT
- 声明,这样的事情(afair)不会返回任何内容。也许(只是一个猜测;))你正在寻找last inserted ID?