Tôi đang viết một ứng dụng Android giao tiếp với chương trình phụ trợ PHP. Các db phụ trợ là SQLite 3. Vấn đề là, tôi nhận được lỗi này liên tục PHP Warning: SQLite3::prepare(): Unable to prepare statement: 5, database is locked
. Tôi đang mở một kết nối đến cơ sở dữ liệu trong mỗi tập tin PHP và đóng nó khi kịch bản kết thúc. Tôi nghĩ rằng vấn đề là một kịch bản đã khóa tập tin cơ sở dữ liệu trong khi viết cho nó và kịch bản thứ hai đã cố gắng truy cập nó, mà không thành công. Một cách để tránh điều này là chia sẻ kết nối giữa tất cả các tập lệnh php. Tôi đã tự hỏi nếu có cách nào khác để tránh điều này?Cơ sở dữ liệu bị khóa khi cố gắng truy cập từ tập lệnh PHP
Edit: Đây là tập đầu tiên:
<?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();
?>
Đây là tập tin thứ hai:
<?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']));
?>
Lần đầu tiên chia sẻ Mã số –
Đã thêm mã và mô tả khác –