猿问

为什么这个查询总是在 phpmyadmin 中有效,但在我的 php pdo 代码中它有时有效?

我正在尝试获取在过去 35 分钟内添加的行。字段议程doEm 的类型为datetime(YYYY-MM-DD HH:ii:ss)。当我复制完全相同的查询并粘贴到 phpmyadmin 时,它可以正常工作,但在我使用 pdo 的 php 代码中,它根据自己的意愿工作(笑)。有时它会正确返回,几秒钟后它不再返回任何结果,然后再次工作。没有返回错误, var_dump($_SESSION['userid']) 也返回了预期值。


我的php代码:


function db_exec($conn,$sql,$values=null){

    $sth = $conn->prepare($sql);

    if($values!=null)

        foreach($values as $key => $value){

            $index=++$key;

            $sth->bindValue($index,$value);

    }

    $sth->execute();

    return $sth;

}


$agendamentos=db_exec($dbread,"SELECT agendamentos.id as id, agendamentos.userid as userid, 

agendamentos.paciente as paciente,agendamentos.agendadoPara as agendadoPara,usuarios.nome as nome,

usuarios.contaTipo as contaTipo, profissionais.sexo as sexo, profissionais.profissao as profissaoId,

tipoProfissionalPF.tipo as profissao,tipoProfissionalPF.urlprefix as urlprefix, tipoProfissionalPJ.tipo as estabelecimento,

tipoProfissionalPJ.urlprefix as clinprefix,empresaDados.nomeFantasia as nomeFantasia

FROM agendamentos 

LEFT JOIN usuarios ON usuarios.id=agendamentos.userid 

LEFT JOIN profissionais ON profissionais.userid=agendamentos.userid 

LEFT JOIN empresaDados ON empresaDados.userid=agendamentos.userid 

LEFT JOIN tipoProfissionalPF ON tipoProfissionalPF.id=profissionais.profissao 

LEFT JOIN tipoProfissionalPJ ON tipoProfissionalPJ.id=empresaDados.tipoProfissionalPJ 

WHERE agendamentos.paciente=? AND agendamentos.confirmado=0 AND TIMESTAMPDIFF(MINUTE,agendamentos.agendadoEm,NOW())<35",array($_SESSION['userid']));


if($agendamentos->rowCount()>0) 

  echo 'ok';

else 

  echo 'none';


正如我之前所说,有时它会起作用,但几分钟后它就不再起作用了。通过在 phpmyadmin 上运行此查询始终有效,即使它在我的 php 页面上不起作用。有谁知道我做错了什么?对我来说是个谜,我没有确定问题所在。


holdtom
浏览 120回答 1
1回答

PIPIONE

问题是我的 rds 实例的时区。主 rds 设置为从属的不同时区,因此查询可能有两个不同的 NOW() 结果,具体取决于到达的 rds。
随时随地看视频慕课网APP
我要回答