首页 > 解决方案 > 有谁知道我调用它时 php 是如何读取查询的?

问题描述

当日期之一来自 sql 时,我很难尝试使用 symfony 框架比较 php 中的日期,我尝试比较两个日期,但我从 postgresql 调用的日期不会被读取为常规日期,我无法调试它,因为由于某种原因,当代码上有 var_dump()、echo() 或 print_r() 时,它会冻结

我尝试将其用作数组、字符串等,但我无法以能够与当前日期进行比较的方式获取响应。

/**
 * @return boolean
 */
public function isClientExpired(Clients $client)
{
    $em = $this->getEntityManager();
    $name = $client->getName();
    $query = $em->getConnection()->prepare("

        SELECT MAX(av.expiring_date) 
        FROM ms_evaluations ev, ms_users_roles usr, ms_users us, 
        ms_clients cl
        WHERE us.name = '$name' 
        AND us.id = cl.user_client 
        AND ev.urid_avaliado = usr.id 
        AND usr.user_id = us.id

      ");
    $query->execute();
    $date = $query->fetchAll();
    $today = date('Y/m/d');

    if ($date<$today) {
        return true;
    } else {
        return false;
    }
}

如果客户端评估已过期,则该函数应返回 true,否则返回 false,但它始终返回 false。我无法调试代码的事实使它变得更加困难,因为我无法看到该查询或日期是如何向我发送的,因此我无法弄清楚如何处理我的代码的响应工作。至少有人知道那个日期对我的影响吗?当我直接在 postgree 上执行它时,它会返回给我类似的东西:

|´´´´最大´´´´|
|2019/23/08|

这是单行单列响应,至少在 postgre 上

先谢谢各位

标签: phppostgresqlsymfony

解决方案


正如文档所说,结果fetchAll()是一个数组:

https://www.php.net/manual/pdostatement.fetchall.php

您应该得到fetchAll()或使用的第一个结果fetchColumn()

https://www.php.net/manual/pdostatement.fetchcolumn.php


推荐阅读