根据程序条件在运行时查询构建

时间:2011-08-12 08:01:56

标签: php mysql

在编写查询时应记住哪些要点?

$ sql =“和两个= 2”;

$ sql。=“和三= 3”;

$ sqlquery =“select * from”。$ sql;

我想制作像示例

这样的复杂查询

2 个答案:

答案 0 :(得分:1)

您最好将where 1=1添加到主查询中。这样你就可以有或没有任何数量的AND连接条件。

像这样:

$base_query = 'select * from table where 1=1';
$base_query.= 'and two = 2';
$base_query = 'and three = 3';

更新: Doctrine ORM风格查询:

//$em is instance of EntityManager
$qb = $em->createQueryBuilder();
$qb->select('u')
  ->from('User', 'u')
  ->where('u.id = ?1')
  ->orderBy('u.name ASC');

//you could add any part of query later
$qb->andWhere("u.name = 'John'");

$query = $qb->getQuery();
$result = $query->getResult();

答案 1 :(得分:0)

我个人喜欢用类似的数组做到这一点:

$where = array(); $where[] = 'Two = 2' $where[] = 'Three = 3'; $sql = implode(' AND ', $where);

我认为使用某些数据库抽象类/活动记录

的其他选项更好

问候。