繁体   English   中英

如何处理PHP的SELECT 1结果?

[英]How can I handle the result of SELECT 1 by PHP?

我有以下代码:

$db
->prepare("SELECT 1
           FROM ( SELECT count(*) AS num_week,
                         sum(date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1  day))) as num_day,
                         sum(date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1  hour))) as num_hour,
                         sum(date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 minute))) as num_1min
                   FROM resend_pass
                  WHERE user_id   = ?  
                    AND date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 WEEK))
                ) a 
           WHERE num_week < 12 AND num_day < 6 AND num_hour < 4 AND num_1min < 1;")
->execute(array($id));

那么如何使用查询结果? WHERE子句上的所有条件都为true时,它返回1 ;否则,则返回WHERE 好吧,我需要知道如何处理以SELECT 1开头的查询的结果?

您甚至不需要知道结果是什么 ,因为无论如何您只会看到1 ,所以您要做的就是查看是否有结果(以及有多少个): PDOStatement :: rowCount

$stmt = $db
->prepare("SELECT 1
           FROM ( SELECT count(*) AS num_week,
                         sum(date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1  day))) as num_day,
                         sum(date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1  hour))) as num_hour,
                         sum(date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 minute))) as num_1min
                   FROM resend_pass
                  WHERE user_id   = ?  
                    AND date_time > unix_timestamp(DATE_SUB(now(), INTERVAL 1 WEEK))
                ) a 
           WHERE num_week < 12 AND num_day < 6 AND num_day < 4 AND num_1min < 1;");
$stmt->execute(array($id));
if($stmt->rowCount() > 0) {
    // Your code
}

当仅选择包含单个值的单个行时,必须使用fetchColumn()。
请注意,对于Vanila PDO,不能对SELECT查询使用方法链接

$stmt = $db->prepare("SELECT 1 whatever");
$stmt->execute(array($id));
$result = $stmt->fetchColumn();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM