SQLite3 запрос не выполняется, ошибка не возникает.
Вставить данные в базу данных нормально, но не получает данные, в чем моя вина?
protected function db2Array($data){
$arr = array();
while ($row = $data -> fetchArray(\SQLITE3_ASSOC)){
$arr[] = $row;
}
return $arr;
}
function getNews() {
try{
$sql = "SELECT msgs.id as id, title, category.name as category, description, source, datetime
FROM msgs, category
WHERE category.id = msgs.category
ORDER BY msgs.id DESC";
$res = $this->_db -> query($sql);
if(!is_object($res)){
throw new Exception ($this->_db -> LastErrorMsg());
return $this->db2Array($res);
}
} catch (Exception $exs){
//$exs -> getMessage();
return FALSE;
}
}
Отступ кода немного делает его более понятным;
if(!is_object($res)){
throw new Exception ($this->_db -> LastErrorMsg());
return $this->db2Array($res); // This will never execute due to the throw
}
Если есть ошибка, вы генерируете исключение и затем (в коде, который не будет выполняться) возвращают результат. Если ошибки нет, вы ничего не возвращаете.
Вы должны переместить возврат за пределы if
объем;
if(!is_object($res)) {
throw new Exception ($this->_db -> LastErrorMsg());
}
return $this->db2Array($res);
Теперь код сгенерирует исключение при ошибке и в противном случае вернет результат.
Других решений пока нет …