|
|
|
| Помогите разобраться, не пойму в чем проблема.
Заранее создал таблицу в БД:
$db = new SQLiteDatabase (DATABASE_PATH);
$db->query ("CREATE TABLE PAGES (
ID INTEGER PRIMARY KEY, Name TEXT, Title TEXT)");
|
Пытаюсь вставить запись в таблицу:
...
$Database = new SQLiteDatabase (DATABASE_PATH);
if (is_null ($this->Config['ID']))
{
$Query = "INSERT INTO PAGES VALUES(null, '".$this->Config['Name']."', '".$this->Config['Title']."');";
#echo $Query;
$Database->query ($Query);
}
...
|
Говорит что не может найти таблицу PAGES
Warning: SQLiteDatabase::query() [sqlitedatabase.query]: no such table: PAGES in ...
|
В чем может быть проблема? Таблица ведб существует О_о | |
|
|
|
|
|
|
|
для: MHz
(12.02.2011 в 11:49)
| | >В чем может быть проблема? Таблица ведб существует О_о
Откуда такая уверенность?
Вы проверили успешность создания таблицы ?
Обнаружили её имя в мета-таблице SQLITE_MASTER ? | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2011 в 12:20)
| | Хм... А может быть причиной проблемы то что я выполняю запись в БД в деструкторе класса? | |
|
|
|
|
|
|
|
для: MHz
(12.02.2011 в 13:52)
| | Крайне маловероятно, что эти две вещи как-то связаны.
Если только это деструктор не вызван уже после того, как закрыт сам объект SqLite
D любом случае проверка состояния вызова SqLite-функций даст знать если что не так. | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2011 в 13:57)
| |
define ('DATABASE_PATH', 'Database.db');
/*
$Database = new SQLiteDatabase (DATABASE_PATH);
$CreateTable = $Database->Query ("CREATE TABLE Pages (ID INTEGER PRIMARY KEY, Name TEXT,
Title TEXT, Keywords TEXT, Description TEXT, Status TEXT)");
if (!$CreateTable) exit('Таблица не создана!');
*/
class SetPage
{
private $Config = array ();
public function __construct ($PageID = NULL)
{
$this->Config['ID'] = $PageID;
}
public function SetName ($Name)
{
$this->Config['Name'] = $Name;
}
public function SetTitle ($Title)
{
$this->Config['Title'] = $Title;
}
public function SetKeywords ($Keywords)
{
$this->Config['Keywords'] = $Keywords;
}
public function SetDescription ($Description)
{
$this->Config['Description'] = $Description;
}
public function SetStatus ($Status)
{
$this->Config['Status'] = $Status;
}
public function __destruct ()
{
$Database = new SQLiteDatabase (DATABASE_PATH);
if (is_null ($this->Config['ID']))
{
$InsertRecord = $Database->Query ("INSERT INTO Pages VAlUES
(NULL, '".$this->Config['name']."', '".$this->Config['Title']."', '".$this->Config['Keywords']."',
'".$this->Config['Description']."', '".$this->Config['Status']."')");
if (!$InsertRecord) exit ('ты плАхой программист!');
}
if (is_numeric ($this->Config['ID']))
{
/*
*
*/
}
}
}
$test = new SetPage (NULL);
$test->SetName("Имя страницы");
$test->SetTitle("Заголовок страницы");
$test->SetKeywords("Ключевые слова страницы");
$test->SetDescription("о страницы");
$test->SetStatus("Статус страницы");
#$test->Write();
|
Если __destruct я переименую в Write (), то все работает, иначе не может найти тамблицу.
Все же это нельзя сделать в деструкторе или я что-то делаю не правильно? | |
|
|
|
|
|
|
|
для: MHz
(12.02.2011 в 14:09)
| | а где Вы уничтожаете экземпляр класса?
И где проверки создания объекта?
И почему-то кажется, что диагностика ошибок php у Вас заблокирована.
PS..
Ожидать успешного подключения после того, как сам php-скрипт успел благополучно загнуться ... довольно наивно.
Дело тут не в деструкторе как таковом. | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2011 в 14:17)
| | Я пока пытаюсь разобраться с самой записью. Имеются ввиду проверки объекта SQLiteDatabase? Ну если бы он не существовал, то не выдавал бы предупреждение что таблица не найдена. Да и до выполнения самого запроса дело доходит ведь | |
|
|
|
|
|
|
|
для: MHz
(12.02.2011 в 14:39)
| | Ладно, нет времени разбираться, создам отдельный метод для записи. Спасибо за помощь! Если все же кто-то объяснит причину проблемы, буду благодарен. :-) | |
|
|
|
|
|
|
|
для: MHz
(12.02.2011 в 16:49)
| | последней строкой unset($test); | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2011 в 16:52)
| | Ох , ты ж ёжик... Как все просто. Получается __destruct () выполняется только при уничтожении объекта. Большое спасибо! | |
|
|
|
|
|
|
|
для: MHz
(12.02.2011 в 17:01)
| | Я ж Вас спрашивал
а где Вы уничтожаете экземпляр класса? | |
|
|
|