2011-11-02 50 views
2

我正在從Android客戶端調用PHP腳本。下面是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

當我這樣做時,這開始工作正常: '$ db = new SQLite3(「terrapin」); $ db-> exec($ insert);' –

回答

1

我想你可能剛剛點擊了經典的sqlite「Gotcha」。

如果您在open語句中指定的文件不存在,sqllite將靜靜地創建一個新的空數據庫。這個新的數據庫不會有你的應用程序期望定義的表格。

查看您的應用程序目錄中是否存在在意外位置創建的空sqlite數據庫。

0

你應該通過print_r()來檢查它。

echo "<pre>";print_r($_GET);echo "</pre>"; 

如果數據到來,那麼你應該檢查 查詢......

總之

,你需要調試你的答案。

0

除非你的表中有限制,否則應該插入一些東西,它是否存在於$_GET

SQLite數據庫文件是可寫的(通過Apache/PHP),還有dirname(__FILE__)文件夾?

+0

所有權限均爲正確 –

相關問題