来自手册:
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();
我是否需要像下面的代码那样做,或者有更简单的方法吗?
urlpatterns = [
url(r'^mailer/$', views.Mailer.as_view(), name='send-email-to-admin'),
url(r'^.*/$',views.Error404.as_view(),name='error404')]
答案 0 :(得分:0)
虽然rowCount()最有可能正常工作,但无论如何你都不需要它。对于选择而言,这是最无用的功能。
您需要数据或计数,但不是两者都需要。由于您选择了数据,因此您不需要rowCount()。只计算您的数据。
如果您只需要计数但没有数据,那么您应该从数据库中选择正确的计数。意味着你不再需要rowCount()。
答案 1 :(得分:-1)
将计数添加到您的查询中:
:focus
然后当你获取:
获取值SELECT *, COUNT(*) as rowCount FROM customers`