2012-09-19 23 views
1

我是PhP的新手。我想從我的sqlite數據庫中刪除一些行,但我無法弄清楚什麼是錯的。我的代碼如下:如何刪除Sqlite數據庫中的行php

<?php 
    $app_name=array("TestApp", "MyDataBase"); 
    $dir = 'sqlite:/home/ravi/public_html/GcmServer/FavoriteApps.db'; 
    $dbh= new PDO($dir) or die("cannot open the database"); 
    for($i=0;$i<sizeof($app_name);$i++) { 
     error_log("looop start here..............."); 
     error_log("FirstAppName ".$app_name[$i]); 
     $result= $dbh->Query("DELETE FROM favorite_apps WHERE appname = '$app_name[$i]'") or die(error_log("error".mysql_error())); 
     error_log("looop execute here..............."); 
    } 
?> 

我的日誌文件是這樣的:

[Wed Sep 19 11:16:38 2012] [error] [client 127.0.0.1] looop start here............... 
[Wed Sep 19 11:16:38 2012] [error] [client 127.0.0.1] FirstAppName TestApp 
[Wed Sep 19 11:16:38 2012] [error] [client 127.0.0.1] error 

和我的本地節目1,
感謝。

+2

'mysql_error'無法看到在PDO中發生的錯誤。改爲使用['PDO :: errorInfo'](http://us.php.net/manual/en/pdo.errorinfo.php)。並查看準備好的陳述。 – DCoder

回答

4

您正在使用mysql_error()函數,但您的數據庫是sqlite,並且您正在使用PDO,其中錯誤處理有很大不同。嘗試將代碼封裝到try-catch塊中以查看更多信息:

<?php 
    $app_name=array("TestApp", "MyDataBase"); 
    $dir = 'sqlite:/home/ravi/public_html/GcmServer/FavoriteApps.db'; 
    $dbh= new PDO($dir) or die("cannot open the database"); 
    try { 
    for($i=0;$i<sizeof($app_name);$i++) { 
     error_log("looop start here..............."); 
     error_log("FirstAppName ".$app_name[$i]); 
     $dbh->Query("DELETE FROM favorite_apps WHERE appname = '$app_name[$i]'"); 
     error_log("looop execute here..............."); 
    } 
    } catch (PDOException $e) { 
    echo $e->getMessage(); 
    } 
?> 
+1

需要一些額外的代碼來使PDO拋出異常:['$ dbh-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);'](http://us.php.net/manual/en/pdo。錯誤handling.php)。 – DCoder