1

MAC Snow Leopard でデータベースを作成するための PHP スクリプトがあります。作成した .sqlite を開こうとすると、SQLite Database Browser 2.0 b1 (「エラーが発生しました: ファイルは SQLite 3 データベースではありません」) と Firefox SQLite Manager (「SQLiteManager: ファイル フォーラムを開く際のエラー」) の両方からエラー メッセージが表示されます。 sqlite - ファイルが暗号化されているか破損しています例外名: NS_ERROR_FILE_CORRUPTED 例外メッセージ: コンポーネントがエラー コードを返しました: 0x8052000b (NS_ERROR_FILE_CORRUPTED)[mozIStorageService.openUnsharedDatabase]")。これは私のスクリプトです

<?php

$dbhandle = sqlite_open('forum.sqlite', $error);
if (!$dbhandle) die ($error);

$stm1 = 'CREATE TABLE author' .'(
            id INTEGER PRIMARY KEY,
            name TEXT,
            url TEXT
           )';

$ok1 = sqlite_exec($dbhandle, $stm1, $error);

if (!$ok1)
   die("Cannot execute query. $error");

echo "Table author created successfully"."\n";   

$stm2 = 'CREATE TABLE thread' .'(
            id INTEGER PRIMARY KEY,
            authorId INTEGER,
            title TEXT,
            reactions INTEGER,
            dislikes INTEGER,
            userScore INTEGER,
            createdAt DATETIME,
            slug TEXT,
            postNumber INTEGER,
            link TEXT,
            likes INTEGER,
            message TEXT,
            category INTEGER,
            score INTEGER,
            categoryLink TEXT,
            FOREIGN KEY(authorId) REFERENCES author(id)
            )';

$ok2 = sqlite_exec($dbhandle, $stm2, $error);

if (!$ok2)
   die("Cannot execute query. $error");

echo "Table thread created successfully"."\n"; 

$stm3 = 'CREATE TABLE commentAuthor' .'(
            authorUrl TEXT PRIMARY KEY,
            name TEXT
            )';

$ok3 = sqlite_exec($dbhandle, $stm3, $error);

if (!$ok3)
   die("Cannot execute query. $error");

echo "Table commentAutor created successfully"."\n"; 

$stm4 = 'CREATE TABLE comment' .'(
            id INTEGER PRIMARY KEY,
            threadId INTEGER,
            forum TEXT,
            parent INTEGER,
            authorUrl TEXT,
            dislikes INTEGER,
            rawMEssage TEXT,
            createdAt DATETIME,
            numReports INTEGER,
            likes INTEGER,
            message TEXT,
            FOREIGN KEY(threadId) REFERENCES thread(id),
            FOREIGN KEY(authorUrl) REFERENCES commentAuthor(authorUrl)
            )';

$ok4 = sqlite_exec($dbhandle, $stm4, $error);

if (!$ok4)
   die("Cannot execute query. $error");

echo "Table comment created successfully"."\n"; 

sqlite_close($dbhandle);

?>

スクリプトが正しく実行され、テーブルが作成されたという確認が表示されます。

4

2 に答える 2

2

これらのsqlite_*関数はSQLite2データベースを作成します。

SQLite 3データベースの場合は、PDOを使用します。

于 2013-03-20T07:43:00.063 に答える
0

または、PDO の代わりに、これを使用することもできます: http://php.net/sqlite3

(しかし、私はPDOも好むでしょう)

于 2013-03-20T08:50:22.830 に答える