当我从数组中的数据库中获取数据时,它只显示每列的一个元素。我正在使用以下查询:
$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
如果数据库只有一行具有指定的查询,那么上面的问题正在创建 但是在具有指定查询的两行的情况下,它正常工作。
答案 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
}
}
}