2011-03-23 73 views
1

你好,請幫我出關於此功能查詢執行錯誤檢查

function delete($serviceid) 
    { 
    $result = $this->query=("delete from service where service_id='$serviceid'"); 
    $exe=$this->executeNonQuery(); 
    if ($exe){ 
    return $success = "Record deleted successfully."; 
    } else { 
    return $error = "Unable to process at this time."; 
    } 
    } 

$ EXE始終是1,即使記錄不會被刪除的可能B,因爲它的,它只是檢查被執行的查詢或不,我怎麼能檢查記錄被刪除,則表明成功的消息

+1

什麼是'executeNonQuery'? – 2011-03-23 19:38:08

+3

您需要提供更多信息。什麼是$ this->查詢?它使用內建的mysql函數嗎?你在使用PDO嗎?你在使用Mysqli嗎? – vicTROLLA 2011-03-23 19:38:42

+0

方法名稱'executeNonQuery'似乎在少數Microsoft技術FWIW的數據庫適配器中使用。我在Google中發現了一個*可怕的*示例PHP數據庫適配器。我希望這不是在這裏使用的。 – Charles 2011-03-23 19:41:32

回答

1

I D不知道你正在使用哪個DB類,但通常有單獨的訪問受影響行數的方法,以及命令是否「成功」(僅從DB接口的角度來看)。

在您的API文檔中查找受影響行數或類似內容的內容。

如果您可以發佈更多的細節,我們可以給你一個具體的答案。

編輯:現在我們知道您使用的是mysqli,您可以使用mysql->affected_rows()來獲取刪除的行數。請參閱http://php.net/manual/en/mysqli.affected-rows.php

function affectedRows() { 
    return mysqli_affected_rows($this->conn); 
} 

將其添加到您的「Person」類中。

然後,switch to PDO and prepared statements。你在做什麼是非常不安全的。

+0

API函數看起來像這樣功能的ExecuteNonQuery()//執行非查詢 { 嘗試 {$ 檢查= $這個 - > conn->查詢($這個 - >查詢); } catch(Exception $ e) { $ this-> error =「執行Non Query時發生錯誤」; $ this-> edetail = $ e-> getMessage(); 返回false; } return true; } – umar 2011-03-23 19:45:58

+0

@umar,這是沒有幫助的。你使用什麼數據庫層? – Brad 2011-03-23 19:47:23

+0

布拉德我已經更新與db層plz檢查出來 – umar 2011-03-23 19:54:49

1

支票mysql_affected_rows()

Reference

+0

然後必須有一個函數來檢查成功時結果集中的行數。你應該嘗試一下。 – diEcho 2011-03-23 19:42:43

+0

這不起作用,因爲他不使用'mysql_query()',所以他沒有一個有效的資源傳遞給'mysql_num_rows()'。 – Brad 2011-03-23 19:42:44

+1

對於刪除,您應該使用mysql_affected_rows()來查明有多少行受到影響。 – 2011-03-23 19:43:10

1

我們肯定需要了解更多關於$這是實例的信息,以便了解它的查詢函數是如何工作的。但是,如果該類使用的是mysql連接,則mysql_affected_rows()函數應返回已刪除的行數。

一個快速測試將是替代品函數,而不是檢查$ exe文件的值:

if (mysql_affected_rows()){ 
    return $success = "Record deleted successfully."; 
} 

檢查了這一點更多細節:http://us2.php.net/mysql_affected_rows