为代码“DateTime::createFromFormat”的 foreach () 提供的参数无效?

Posted

技术标签:

【中文标题】为代码“DateTime::createFromFormat”的 foreach () 提供的参数无效?【英文标题】:invalid argument supplied for foreach () for code "DateTime::createFromFormat"? 【发布时间】:2019-08-01 03:42:30 【问题描述】:

我在codeigniter中设置了时间戳在数据库中,格式为(yyyy-mm-dd hh: ii: ss) to (yyyy-mm-dd)


    function login($patient_ext_id,$birth_dttm) 
            $this->db->select('xocp_ehr_patient.patient_ext_id, xocp_persons.person_nm, xocp_persons.birthplace, xocp_persons.birth_dttm, xocp_persons.status_cd, xocp_persons.race_nm');
            $this->db->from('xocp_ehr_patient');
            $this->db->join('xocp_persons', 'xocp_ehr_patient.person_id = xocp_persons.person_id');
            /*$this->db->join("xocp_persons","xocp_persons.person_id = xocp_ehr_patient.patient_ext_id","left");*/
            $this->db->where('xocp_ehr_patient.patient_ext_id', $patient_ext_id);
            $tgl = $this->db->select(DateTime::createFromFormat('Y-m-d','xocp_persons.birth_dttm'));
            $this->db->where($tgl, $birth_dttm);
            /*$query =  $this->db->get('xocp_persons');*/
            $query =  $this->db->get('');
            return $query->num_rows();
        

文件数据库/DB_query_build.php 中的代码无效

public function select($select = '*', $escape = NULL)
    
        if (is_string($select))
        
            $select = explode(',', $select);
        

        // If the escape value was not set, we will base it on the global setting
        is_bool($escape) OR $escape = $this->_protect_identifiers;

        foreach ($select as $val)
        
            $val = trim($val);

            if ($val !== '')
            
                $this->qb_select[] = $val;
                $this->qb_no_escape[] = $escape;

                if ($this->qb_caching === TRUE)
                
                    $this->qb_cache_select[] = $val;
                    $this->qb_cache_exists[] = 'select';
                    $this->qb_cache_no_escape[] = $escape;
                
            
        

        return $this;
    

严重性:警告消息:为 foreach() 提供的参数无效 文件名:数据库/DB_query_builder.php

行号:294

【问题讨论】:

上面的代码中没有foreach() 是的,我必须做什么? 你从哪里得到invalid argument supplied for foreach () 在文件database/DB_query_builder.php中,代码为:link @RizkyDwiananto 你有一个奇怪的选择查询,你希望$tgl 有什么值? 【参考方案1】:

打印 $select。有没有获取数据数组

    if(is_array($select))
 foreach ($select as $val)
        
     $val = trim($val);
      if ($val !== '')
        
        $this->qb_select[] = $val;
        $this->qb_no_escape[] = $escape;
      if ($this->qb_caching === TRUE)
     
        $this->qb_cache_select[] = $val;
        $this->qb_cache_exists[] = 'select';
        $this->qb_cache_no_escape[] = $escape;
            
           
          

【讨论】:

我试过但“遇到 PHP 错误” 严重性:警告消息:非法偏移类型文件名:database/DB_query_builder.php 行号:667【参考方案2】:

您的查询错误。您可以将登录功能替换如下。

function login($patient_ext_id,$birth_dttm) 
    $this->db->select('xocp_ehr_patient.patient_ext_id, xocp_persons.person_nm, xocp_persons.birthplace, xocp_persons.birth_dttm, xocp_persons.status_cd, xocp_persons.race_nm');
    $this->db->from('xocp_ehr_patient');
    $this->db->join('xocp_persons', 'xocp_ehr_patient.person_id = xocp_persons.person_id');
    /*$this->db->join("xocp_persons","xocp_persons.person_id = xocp_ehr_patient.patient_ext_id","left");*/
    $this->db->where('xocp_ehr_patient.patient_ext_id', $patient_ext_id);
    $this->db->having("DATE_FORMAT( xocp_persons.birth_dttm, '%Y-%m-%d') = '$birth_dttm'", "",false);
    /*$query =  $this->db->get('xocp_persons');*/
    $query =  $this->db->get('');
    return $query->num_rows();

【讨论】:

这对我有用,谢谢@MohammedShafeek,所以查询“有”你能解释一下吗? @Rizky Dwiananto 聚合部分将在没有 where 子句中的子句中起作用...但是您的错误是您在 mysql 查询列中集成了 PHP 函数...这是不可能的。

以上是关于为代码“DateTime::createFromFormat”的 foreach () 提供的参数无效?的主要内容,如果未能解决你的问题,请参考以下文章

matlab-另存为代码

将二进制代码转换为 DNA 代码 [关闭]

如何自动将 Java 代码转换为 Groovy 代码 [关闭]

怎样将halcon代码转化为DLL文件

将功能组件代码转换为类组件代码

将源代码保存为为客户端呈现的 .txt 文件