#php #android #sqlite
#php #Android #sqlite
Вопрос:
Я вызываю PHP-скрипт из клиента Android. Вот PHP-скрипт
<?php
//$user = $_GET['username'];
//$timestamp = $_GET['timestamp'];
//$latitude = $_GET['latitude'];
//$longtitude = $_GET['longtitude'];
//$filename = $_GET['filename'];
$user = "test";
$timestamp = 100;
$latitude = 10;
$longtitude = 10;
$filename = "test.jpg";
$dbname = "sqlite:/".dirname(__FILE__)."/terrapin";
$handle = new PDO($dbname);
if (!$handle) die ($error);
error_log("before exec",0);
$insert = "INSERT INTO information VALUES(NULL,'$user','$latitude','$longtitude','$timestamp','$filename')";
$handle->exec($insert);
error_log("after exec",0);
$handle = null;
$total = $user."n".$timestamp."n".$latitude."n".$longtitude;
$name = "dumpp.txt";
$fh = fopen($name, 'w');
fwrite($fh,$total);
fclose($fh);
?>
Проблема в том, что когда я запускаю скрипт из командной строки, он работает нормально и вставляется в базу данных. Но когда я удаляю комментарии и получаю значения из запроса GET и вызываю скрипт от клиента, в базу данных ничего не вставляется. В ошибке ничего нет, однако оба оператора error_log печатаются. Есть какие-нибудь идеи, почему это происходит?
Комментарии:
1. Это начало работать нормально, когда я сделал это:
$db = new SQLite3("terrapin"); $db->exec($insert);
Ответ №1:
Я думаю, вы, возможно, только что попали в классический sqlite «Gotcha».
Если файл, указанный вами в инструкции open, не существует, sqllite незаметно создаст новую пустую базу данных. В этой новой базе данных не будут определены таблицы, которые ожидает ваше приложение.
Поищите в каталогах своих приложений пустую базу данных sqlite, созданную в неожиданном месте.
Ответ №2:
вы должны проверить это с помощью print_r().
echo "<pre>";print_r($_GET);echo "</pre>";
если данные поступают, вам следует проверить
свой запрос…
короче говоря, вам нужно выполнить отладку для вашего ответа.
Ответ №3:
Если у вас нет ограничений в вашей таблице, что-то должно быть вставлено, независимо от того, существует оно $_GET
или нет.
Доступен ли для записи файл базы данных SQLite (с помощью Apache / PHP), а также dirname(__FILE__)
папка?