当我在数组中获取时,每列只显示一个元素

时间:2015-07-31 11:03:05

标签: php mysql arrays

当我从数组中的数据库中获取数据时,它只显示每列的一个元素。我正在使用以下查询:

 $stmt = $conn_obj->select(' user ',' * ',' status = "updated" ', $order=NULL, $group=null, $fromRecordNum.','.$recordsPerPage);

并选择功能如下:

private function tableExists($table) {
    //$this->con = $this->createconnection();
    $query = 'SHOW TABLES FROM ' . $this->db . ' LIKE "'.trim($table).'"';
    //echo ''.$query;
        $tablesInDb = mysqli_query($this->con, $query);
        if ($tablesInDb) {
            if (mysqli_num_rows($tablesInDb) == 1) {
                //echo ''.mysqli_num_rows($tablesInDb);
                return true;
            } 
            else {
                return false;
            }
        }
}
 public function select($table, $row = '*', $where= null,$order=null,$group=null, $limit=null, $join=null){
    //$this->con = $this->createconnection();
    //echo $join;
    $q = 'select'.$row.' from '.$table;
    //print_r($q);
    if($join != null){
        $q .= ' join '.$join;

    }
    if($where != null){
        $q .= ' where '.$where;
        print_r($q);
    }
     if($group != null){
        $q .= 'group by'.$group;
        //print_r($q);
    }
     if($order != null){
        $q .= 'order by'.$order;

    }       
     if($limit != null){
        $q .= 'limit '.$limit;
       print_r($q);
    }

   if ($this->tableExists($table)) { 
        $query = mysqli_query($this->con, $q)  or die(mysql_error());
        //print_r($query);
        if ($query) {
            $this->numResults = mysqli_num_rows($query);
            //echo $this->numResults;
            for ($i = 0; $i < $this->numResults; $i++) {
                $r = mysqli_fetch_array($query);
                $key = array_keys($r);

                for ($x = 0; $x < count($key); $x++) {
                    // Sanitizes keys so only alphavalues are allowed  
                    if (!is_int($key[$x])) {
                        if (mysqli_num_rows($query) > 1)
                            $this->result[$i][$key[$x]] = $r[$key[$x]];
                        else if (mysqli_num_rows($query) < 1)
                            $this->result = null;
                        else
                            $this->result[$key[$x]] = $r[$key[$x]];
                    }
                }
            }
            //print_r($this->result);
            return $this->result;
        } else {

            return false;
        }
    } else{

        return false;
    }
}

我使用foreach循环获取它如下:

foreach($stmt as $row)
{  
    echo $row['user_Id'];
}

输出= 7 t:2 2 2 u W u 2
如果我用print_r($row)打印整个数组,那么 输出= test :: 1 2015-07-30 11:42:09 am 2015-07-29 12:42:09 pm 2015-07-30 12:28:57 pm更新call_activated uninstall 2015-07-30 12:31:07 pm

如果数据库只有一行具有指定的查询,那么上面的问题正在创建 但是在具有指定查询的两行的情况下,它正常工作。

1 个答案:

答案 0 :(得分:1)

对于多个结果,您将获得一系列元素数组 对于单个结果,您将获得一系列元素。 因此,对于单个元素,您有一个foreach循环太多。 如果在你的例子中:

foreach($stmt as $row) {  
    echo $row['user_Id'];
}

假设$stmt包含查询的返回值:

foreach($stmt as $row) {
    if (isset($row['user_Id'])) {
        // do something with one single result record
    } else {
        foreach ($row AS $innerRow) {
            // do something with each result record
        }
    }
}