我从Android客户端调用PHP脚本。这是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语句都会打印出来。知道为什么会这样吗?
答案 0 :(得分:1)
我想你可能刚刚打过经典的sqlite“Gotcha”。
如果您在open语句中指定的文件不存在,sqllite将静静地创建一个新的空数据库。这个新数据库将没有您的应用程序期望在其中定义的表。
在应用程序目录中查看在意外位置创建的空sqlite数据库。
答案 1 :(得分:0)
你应该通过print_r()来检查它。
echo "<pre>";print_r($_GET);echo "</pre>";
如果数据来了,那么你应该检查一下 你的查询...
简而言之,您需要调试您的答案。
答案 2 :(得分:0)
除非您的表中有约束,否则应插入某些内容,而不是$_GET
中的内容。
SQLite数据库文件是否可写(由Apache / PHP)以及dirname(__FILE__)
文件夹?