PDOStatement对象:: rowCount时()返回由相应的执行受到 行最后DELETE,INSERT或UPDATE语句的数量 PDOStatement对象。
如果由关联的PDOStatement执行的最后一条SQL语句是 的SELECT语句,某些数据库可能会返回该语句返回的行数 。但是,对于所有数据库,此行为不保证 ,不应依赖便携式 应用程序。
因此PDOStatement::rowCount()
不适用于我的SELECT
查询。我有查询,我必须要能够AND
添加条件WHERE
条款是这样的:
$sql = "SELECT * FROM customers WHERE 1=1";
if ($name)
$sql .= " AND `name` LIKE :name";
if ($type)
$sql .= " AND `type` = :type";
if ($category)
$sql .= " AND `category` = :category";
if ($group)
$sql .= " AND `group` = :group";
if ($area)
$sql .= " AND `area` = :area";
$query = $pdo->prepare($sql);
if ($name)
$query->bindValue(':name', '%' . $name . '%');
if ($type)
$query->bindValue(':type', $type);
if ($category)
$query->bindValue(':category', $category);
if ($group)
$query->bindValue(':group', $group);
if ($area)
$query->bindValue(':area', $area);
$query->execute();
我需要做到像下面的代码或者是有一些简单的方法来做到这一点?
$sql = "SELECT * FROM customers WHERE 1=1";
$count = "SELECT COUNT(*) FROM customers WHERE 1=1";
if ($name) {
$sql .= " AND `name` LIKE :name";
$count .= " AND `name` LIKE :name";
}
if ($type) {
$sql .= " AND `type` = :type";
$count .= " AND `type` = :type";
}
if ($category) {
$sql .= " AND `category` = :category";
$count .= " AND `category` = :category";
}
if ($group) {
$sql .= " AND `group` = :group";
$count .= " AND `group` = :group";
}
if ($area) {
$sql .= " AND `area` = :area";
$count .= " AND `area` = :area";
}
$query = $pdo->prepare($sql);
if ($name)
$query->bindValue(':name', '%' . $name . '%');
if ($type)
$query->bindValue(':type', $type);
if ($category)
$query->bindValue(':category', $category);
if ($group)
$query->bindValue(':group', $group);
if ($area)
$query->bindValue(':area', $area);
$query->execute();
可能重复【行数与PDO(HTTP://计算器。 com/questions/883365/row-count-with-pdo) –
@GeraldSchneider,我们的问题有点不同,我只是看看是否有一些更简单的方法来做到这一点。例如,我可以使用相同的连接赋值运算符''将'$ sql'和'$ count'添加到同一个文件中。'=' – lingo
您的要求完全相同。第二个答案(不是公认的答案)解释了可能性很好。 –