Всем привет!
Пару лет назад была такая же проблема, но похоже ТС просто забил(. Проблема, как и в старой теме та же - в файле базы данных эти самые данные есть, а вот массив, который их должен вывести почему-то пустой(
Помогите мне пожалуйста с одной проблемой.
Я сейчас учусь по видеоурокам Борисова, курс от 2016 года. Сделал все как он сказал, и ничего не получилось.А сделать надо вот что: вывести из БД SQLite данные.
В базу то они добавились, а вот вывести никак не выходит, все перепробовал(((
Вот код:
NewsDB.php
код:
Спойлер (Отобразить)PHP:
скопировать код в буфер обмена
<?PHP
require "INewsDB.class.php";
class NewsDB implements INewsDB{
const DB_NAME = "../news.db";
const ERR_PROPERTY = "Wrong property name";
private $_db;
function __construct(){
$this->_db = new SQLite3(self::DB_NAME);
try{
$sql = "CREATE TABLE msgs(
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT,
category INTEGER,
description TEXT,
source TEXT,
datetime INTEGER)";
if ($this->_db->exec($sql))
throw new Exception($this->_db->lastErrorMsg());
$sql = "CREATE TABLE category(
id INTEGER,
name TEXT)";
if ($this->_db->exec($sql))
throw new Exception($this->_db->lastErrorMsg());
$sql = "INSERT INTO category(id, name)
SELECT 1 as id, 'Политика' as name
UNION SELECT 2 as id, 'Культура' as name
UNION SELECT 3 as id, 'Спорт' as name";
if ($this->_db->exec($sql))
throw new Exception($this->_db->lastErrorMsg());
}catch(Exception $e){
//$e->getMessage();
echo "Все плохо :'(";
}
}
}
function __destruct(){
}
function __get($name){
if ($name == "db")
return $this->_db;
throw new Exception("Wrong property name");
}
function __set($name, $value){
throw new Exception(self::ERR_PROPERTY);
}
function saveNews($title, $category, $description, $source){
$sql = "INSERT INTO msgs(title, category, description, source, datetime)
VALUES('$title', $category, '$description', '$source', $dt)";
return $this->_db->exec($sql);
}
function db2Arr($data){
$arr = [];
while($row = $data->fetchArray(SQLITE3_ASSOC))
$arr[] = $row;
return $arr;
}
function getNews(){
$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(!$res) return false;
return $this->db2Arr($res);
}
function deleteNews($id){}
function clearStr($data){
return $this->_db->escapeString($data);
}
function clearInt($data){
}
}