Php 如何将此mySql查询转换为PDO格式。。。?

Php 如何将此mySql查询转换为PDO格式。。。?,php,mysql,pdo,Php,Mysql,Pdo,我应该如何为这种类型的查询编写PDO Prepare和bindValue/param语句,其中我检查值是否为空,然后只将其添加到查询字符串中 $query = "SELECT * FROM cabs WHERE DATE='$date' "; if ($mode!=='' || $mode!=="") $query .="AND MODE='$mode' "; if ($tfno!=='') $query .="AND TFNO='$tfno' "; $query .="ORDER

我应该如何为这种类型的查询编写PDO Prepare和bindValue/param语句,其中我检查值是否为空,然后只将其添加到查询字符串中

$query = "SELECT * FROM cabs WHERE DATE='$date' ";
if ($mode!=='' || $mode!=="")
  $query .="AND MODE='$mode' ";

if ($tfno!=='')
  $query .="AND TFNO='$tfno' ";
  $query .="ORDER BY TIME";

快速回答,无需测试:

<?php
$params = array(':date' => $date);
$query = "SELECT * FROM cabs WHERE DATE=':date' ";
if ($mode!=='' || $mode!=="") {
  $query .="AND MODE=':mode' ";
  $params[':mode'] = $mode;
}

if ($tfno!=='') {
  $query .="AND TFNO=':tfno' ";
  $params[':tfno'] = $tfno;
}
$query .="ORDER BY TIME";

$req = $dbh->prepare($query);
$req->execute($params);

如果
array\u push
没有保留顺序,那么它将是一个相当愚蠢的函数。也就是说,我同意使用命名参数-使您的查询更易于维护。ohkk将尝试使用它asap@NiettheDarkAbsol我记得数组中的默认索引有问题,不记得是什么。所以是的,似乎很明显array_push可以完成这项工作,但是自从我拥有array一次。。。