SQLite3与php 5.4没有创建db文件

时间:2013-10-18 11:57:10

标签: sqlite php-5.4

我的问题很简单。

我正在尝试从firebird中的一个表到SQLite中的另一个表创建转储信息的脚本。

我能够完成所有过程,但我无法做的是创建一个持久的sqlite数据库。我在我的计算机(Ubuntu 13.04)上的“/ var / www / PabloLab / experiments”中启动了这个脚本,我不知道创建文件的位置或是否创建了文件。

完整的脚本:

/*
 * Preparing SQLite db
 */

$dbname = 'langs.sqlite';
$my_table = 'LANG';

$db = new SQLite3($dbname, 0666);    
$query = "CREATE TABLE $my_table (ID INTEGER NOT NULL,
                                  TXT VARCHAR,
                                  LANG_ID NUMERIC NOT NULL)";
$success = $db->exec($query);    
$stmt = "SELECT r.ID, r.TXT, r.LANG_ID
         FROM VLANG r
         WHERE r.ID in (1,3)";
$sql = EF_sql_connection($stmt, MY_FIREBIRD_DB); //It works perfect, no problem here.
while ($lang_info = ibase_fetch_assoc($sql)) {
    $lang = utf8_encode($lang_info["TXT"]);
    $id = utf8_encode($lang_info["ID"]);
    $lang_id = utf8_encode($lang_info["LANG_ID"]);
    $stmt_sqlite = "INSERT INTO $my_table VALUES ($id, '$lang', $lang_id)";
    $success = $db->exec($stmt_sqlite);
}
$result = $db->query("SELECT * FROM $my_table");
while($row = $result->fetchArray()){
    $id = $row["ID"];
    $txt = $row["TXT"];
    $lang_id = $row["LANG_ID"];
    echo "$id - $txt - $lang_id<br>";
}

感谢您的帮助和时间。

问候。

1 个答案:

答案 0 :(得分:0)

(只是复制我的评论,解决了@ reverendocabron的问题以便于参考。)

$ flags参数预计为SQLITE3_OPEN_READONLYSQLITE3_OPEN_READWRITE和/或SQLITE3_OPEN_CREATE(其值分别为1,2和4)一个Unix风格的0666参数。在你的情况下,我猜你正在寻找的是SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE,它恰好是默认值。尝试删除 它