【问题标题】:Better way to use mysql count() or num_rows使用 mysql count() 或 num_rows 的更好方法
【发布时间】:2015-03-26 16:40:33
【问题描述】:

我正在使用这个 mysql 选择查询来检查数据库中给定类别存在多少图像。我想为一个类别保留最多 5 张图片。

$q = "SELECT image_id FROM image_info
            WHERE category_id = 1 AND member_id = $userId";
$r = $mysqli->query($q) or trigger_error($mysqli->error." [$q]"); 

if($r->num_rows <= 4) {
    echo 'good';
    // my stuff 
} else {
    echo 'bad';
}

这对我有用。但我想知道有没有办法使用mysqlCOUNT() 进行此查询?如果是这样,有什么更好的方法来做到这一点。

谢谢。

【问题讨论】:

  • 警告:使用mysqli 时,您应该使用参数化查询和bind_param 将用户数据添加到您的查询中。 请勿使用字符串插值来完成此操作,因为您将创建严重的SQL injection bugs从不$_POST数据直接放入查询中。
  • 有些实例(在 stackoverflow.com 和其他网站上注明) COUNT() 返回不正确的值。所以我认为应该使用 num_rows。
  • @tadman,谢谢你的建议。你能告诉我如何使用COUNT()创建关于查询吗?

标签: mysql select count


【解决方案1】:

这取决于你想要达到的目标

num_rows 在记录数较少时更好,因为它是获取的结果记录数。

count(*) 是数据库中匹配查询的记录数。 Count(*) 比 num_rows 更有效,因为在 num_rows 中,您正在从数据库中检索许多记录并最终将这些记录传递给 PHP


"SELECT count(*) FROM image_info WHERE category_id ='".$userId."'";

【讨论】:

  • IF条件如何使用?
  • 只获取查询结果,不用$r-&gt;num_rows
  • @MySQLRockstar 对于这样的COUNT() 语句,您应该得到一行或一个错误。
猜你喜欢
  • 1970-01-01
  • 2011-12-18
  • 2011-11-22
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
相关资源
最近更新 更多