Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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 DBAL参数不工作_Php_Sqlite_Symfony_Doctrine Orm_Silex - Fatal编程技术网

Php DBAL参数不工作

Php DBAL参数不工作,php,sqlite,symfony,doctrine-orm,silex,Php,Sqlite,Symfony,Doctrine Orm,Silex,您好,我正在使用PHPSilex和DBALQueryBuilder(无ORM)以及SQLite。它有点工作,所以我可以构建一个查询,它会吐出结果,但我一辈子都不能让设置参数工作(我总是得到空数组) 以下是有效的方法: $qb->select('*') ->from('photos') ->where("country = '".$country."'") ->andWhere('status = 1'

您好,我正在使用PHPSilex和DBALQueryBuilder(无ORM)以及SQLite。它有点工作,所以我可以构建一个查询,它会吐出结果,但我一辈子都不能让设置参数工作(我总是得到空数组)

以下是有效的方法:

$qb->select('*')
            ->from('photos')
            ->where("country = '".$country."'")
            ->andWhere('status = 1')
            ->orderBy($sort[0], $sort[1])
            ->setFirstResult($start)
            ->setMaxResults($limit)
出于显而易见的原因,我想用以下内容代替:

$qb->select('*')
            ->from('photos')
            ->where("country = ?") /// <--
            ->andWhere('status = 1')
            ->orderBy($sort[0], $sort[1])
            ->setFirstResult($start)
            ->setMaxResults($limit)
            ->setParameter(0, $country) /// <--
$qb->select('*'))
->来自(“照片”)
->其中(“国家=?”///andWhere('status=1'))
->orderBy($sort[0],$sort[1])
->setFirstResult($start)
->setMaxResults($limit)
->setParameter(0,$country)///选择('*'))
->来自(“照片”)
->其中(“country=:country”)///和其中(“status=1”)
->orderBy($sort[0],$sort[1])
->setFirstResult($start)
->setMaxResults($limit)
->setParameter(':country',$country)///db->createQueryBuilder();
$expr=$qb->expr();
$qb->选择(“*”)
->来自(“照片”)
->其中($qb->expr()->andX(
$qb->expr()->eq('country','1'),///expr()->eq('status',1)
))
->orderBy($sort[0],$sort[1])
->setFirstResult($start)
->setMaxResults($limit)

->setParameter(1,$country)//我无意中回到了我自己的问题,因为我很久以前就解决了这个问题,当然这是一件愚蠢的事情。问题不在于正确地构建查询,而在于正确地使用查询。以下是答案供将来参考

使用查询生成器,您不需要执行以下操作:

$this->db->fetchAll($qb->getSQL()); 
// you get query with unfilled placeholders
而是:

$qb->execute()->fetchAll();

感谢所有试图帮忙的人

我无意中又回到了我自己的问题上来,因为我很久以前就解决了这个问题,结果当然是一件愚蠢的事情。问题不在于正确地构建查询,而在于正确地使用查询。以下是答案供将来参考

使用查询生成器,您不需要执行以下操作:

$this->db->fetchAll($qb->getSQL()); 
// you get query with unfilled placeholders
而是:

$qb->execute()->fetchAll();

感谢所有试图帮忙的人

你能详细说明一下“似乎不起作用”,没有结果返回吗?没错。没有错误。只是空结果数组。第一种方法按预期返回行。只是显示的更改。您是否尝试过
->setParameter('country',$country)
(不带冒号)否。那么我应该如何在where()方法中声明参数?带或不带冒号?
->其中(“country=:country”)
->setParameter('country',$country)
。能否详细说明“似乎不起作用”,没有返回结果?完全正确。没有错误。只是空结果数组。第一种方法按预期返回行。只是显示的更改。您是否尝试过
->setParameter('country',$country)
(不带冒号)否。那么我应该如何在where()方法中声明参数?带或不带冒号?
->其中(“country=:country”)
->setParameter('country',$country)
。请将您自己的问题标记为正确。这正好说明了我周日下午的阴郁发展。请把你自己的问题标记为正确。它正好照亮了我周日下午郁闷的发展。