Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么此查询返回0行?_Php_Mysql_Zend Framework_Select_Doctrine - Fatal编程技术网

Php 为什么此查询返回0行?

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

我有以下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_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]:无效参数编号:绑定变量的数量与令牌的数量不匹配