我正在写一个与PHP后端进行通信的Android应用程序。后端数据库是SQLite 3.问题是,我间歇性地得到这个错误PHP Warning: SQLite3::prepare(): Unable to prepare statement: 5, database is locked
。我打开每个PHP文件中的数据库连接并在脚本结束时关闭它。我认为问题在于一个脚本在写入数据库文件时锁定了数据库文件,第二个脚本试图访问它,失败了。避免这种情况的一种方法是共享所有的PHP脚本之间的连接。我想知道是否有其他方法可以避免这种情况?尝试从PHP脚本访问时数据库被锁定
编辑: 这是第一个文件:
<?php
$first = SQLite3::escapeString($_GET['first']);
$last = SQLite3::escapeString($_GET['last']);
$user = SQLite3::escapeString($_GET['user']);
$db = new SQLite3("database.db");
$insert = $db->prepare('INSERT INTO users VALUES(NULL,:user,:first,:last, 0 ,datetime())');
$insert->bindParam(':user', $user, SQLITE3_TEXT);
$insert->bindParam(':first', $first, SQLITE3_TEXT);
$insert->bindParam(':last', $last, SQLITE3_TEXT);
$insert->execute();
?>
这里是第二个文件:
<?php
$user = SQLite3::escapeString($_GET['user']);
$db = new SQLite3("database.db");
$checkquery = $db->prepare('SELECT allowed FROM users WHERE username=:user');
$checkquery->bindParam(':user', $user, SQLITE3_TEXT);
$results = $checkquery->execute();
$row = $results->fetchArray(SQLITE3_ASSOC);
print(json_encode($row['allowed']));
?>
第一次共享代码 – 2012-03-26 03:33:55
添加的代码和更多描述 – 2012-03-26 03:42:32