2013-06-25 67 views
0

我有一個PHP腳本,需要兩個POST值,然後使用它們從我的數據庫中查找和刪除一行,如下所示:DELETE SQL沒有觸發 - 在非對象上調用成員函數exec()

<?php 
$incomingListNameD = $_POST['text']; 
$incomingNewContentD = $_POST['text2']; 

    //MAIN DB function for removing items 

try 
{ 
    //open the database PDO METHOD 
    $db = new PDO('sqlite:listDB.sqlite'); 

    $db->exec("INSERT INTO ListItems (ParentList, Content) VALUES ('Poopy', 'Ruglegs');"); 

    //Prepared statement version of values remove 

    $qry = $db->prepare("DELETE FROM ListItems (ParentList,Content) VALUES (?,?)"); 
    $qry->execute(array($incomingListNameD,$incomingNewContentD)); 

    // close the database connection 
    $db = NULL; 
} 
catch(PDOException $e) 
{ 
    print 'Exception : '.$e->getMessage(); 
} 
?> 

問題是我不斷收到錯誤:

call to a member function exec() on a non-object.

的貓糞Ruglegs(不要問,只是增加了調試)行被添加,所以我確實有工作的手柄;我的DELETE只是不行。有什麼想法嗎?

+4

這不是一個DELETE語句正確的語法 - 它'DELETE FROM表WHERE condition' – andrewsi

+0

說什麼'的var_dump($ db)'? – vikingmaster

+0

你正在做錯誤檢查錯誤。 PDO默認不會拋出異常。 –

回答

0

檢查$db在調用exec()之前是否構造正確。我猜它沒有正確實例化。

爲了調試:

var_dump($db) 

處理:

if(isset($db)) { 
... 
} else { 
... 
} 
+0

其設置。它還設法編寫Poopy Ruglegs行,所以我認爲那裏很好。 – KolKurtz

+0

你確定嗎?也許你認爲它將它添加到數據庫,但它已經在那裏。代碼在exec()調用中失敗的原因必然存在。 – charlespwd

+0

我已經查了很多次了。我每次都清空分貝,所以我確切地知道里面有什麼,然後在每次操作後檢查。現在我已經清除了準備好的語句,因爲我似乎無法用準備好的語句爲多條件DELETE獲得正確的語法,而且似乎沒有人想告訴我。 – KolKurtz

相關問題