我有以下功能
function getQuery($sql,$returnType = ''){
$data = array();
$result = $this->db->query($sql);
if($result){
switch($returnType){
case 'count':
$data = $result->num_rows;
break;
case 'single':
$data = $result->fetch_assoc(); //Line 55
break;
default:
if($result->num_rows > 0){
while($row = $result->fetch_assoc()){
$data[] = $row;
}
}
}
}
if(!empty($data)) {
return $data;
}
return false;
}
执行此方法后,返回错误
输入:错误
消息:调用未定义的方法CI_DB_mysqli_result :: fetch_assoc()
行号:55
我无法理解错误显示的原因。请帮忙!!!
答案 0 :(得分:1)
fetch_assoc()
不是Codeignetor查询构建器的方法,它是mysqli
的actaullay方法,但您使用的是“Codeignetor查询构建器”
用于单行使用,如
$query = $this->db->query("YOUR QUERY");
$row = $query->row();
if (isset($row))
{
echo $row->title;
echo $row->name;
echo $row->body;
}
表示多行:
$query = $this->db->query("YOUR QUERY");
foreach ($query->result_array() as $row)
{
echo $row['title'];
echo $row['name'];
echo $row['body'];
}
您必须使用以下代码
function getQuery($sql,$returnType = ''){
$data = array();
$result = $this->db->query($sql);
if($result){
switch($returnType){
case 'count':
$data = $result->num_rows();
break;
case 'single':
$data = $result->row_array(); // return result as array
or
$data = $result->row(); // return result as object
break;
default:
$data = $result->result_array(); // result in array
or
$data = $result->result(); // return a objects
}
}
if(!empty($data)) {
return $data;
}
return false;
}
答案 1 :(得分:0)
您可以针对您的问题尝试此解决方案:
function getQuery($sql,$returnType = ''){
$data = array();
$result = $this->db->query($sql);
if($result){
switch($returnType){
case 'count':
$data = $result->num_rows;
break;
case 'single':
$data = $result->row(); // CodeIgniter return single row
break;
default:
if($result->num_rows > 0){
$data = $result->result(); // CodeIgniter return result object and you can set result_array() get array list
}
}
}
if(!empty($data)) {
return $data;
}
return false;
}