Php 为什么此查询返回0行?
我有以下DQL查询:Php 为什么此查询返回0行?,php,mysql,zend-framework,select,doctrine,Php,Mysql,Zend Framework,Select,Doctrine,我有以下DQL查询: $q = Doctrine_Query::create() ->select('id') ->from('Comment') ->where("active='?' AND object_id='?' AND group_name = '?'" , array(1, 1, 'unit')); 产生sql的方法: SELECT c.id AS c__id, c.group_name AS c__group_n
$q = Doctrine_Query::create()
->select('id')
->from('Comment')
->where("active='?' AND object_id='?' AND group_name = '?'"
, array(1, 1, 'unit'));
产生sql的方法:
SELECT c.id AS c__id, c.group_name AS c__group_name, c.name AS c__name,
c.email AS c__email
FROM comment c
WHERE (c.active = '?' AND c.object_id = '?' AND c.group_name = '?')
bindings: 1, 1, unit
在数据库表中:
id user_id object_id group_name name active
1 0 1 unit test 1
执行反查询时,它返回0行。为什么?
如果我进入phpmyadmin
并运行
SELECT * FROM comment WHERE active=1 AND object_id=1 AND group_name='unit'
结果包含我要查找的记录
在phpmyadmin中,Doctrine生成的查询将表名标识为“c”。这很奇怪,因为我在我的应用程序中使用了其他类似于此的DQL查询,并且可以正常工作
谢谢。删除参数占位符周围的引号:
where("active=? AND object_id=? AND group_name = ?"
或者使用命名参数
:
where("active= :ative AND object_id= :object_id AND group_name = :group_name"
, array(':ative'=>1, ':objet_id'=>1, 'group_name'=>'unit')"
如果我更改它,我会得到一个错误,因此我使用了“?”:“SQLSTATE[HY093]:无效参数编号:绑定变量的数量与令牌的数量不匹配