2017-06-01 58 views
0

我正在用php代碼做一個系統,但用SQL刪除函數不行。我不知道它爲什麼會發生。刪除功能不起作用

下面是我的代碼:

function deleteEmployee($params) 
{ 
    $tid = $_SESSION['tmid']; 
    $data = array(); 
    //print_R($_POST);die; 
    $sql = "delete from `cusinfo` WHERE TICKET_ID='".$params["id"]."' AND AGENT_CODE_STAFF_ID IN (SELECT id FROM `users` where tm_groupid = '$tid')"; 
    echo $result = mysqli_query($this->conn, $sql) or die("error to delete employee data"); 
} 
+1

「沒有作品能」是不是工作問題描述。 _爲什麼它不工作? – HoneyBadger

+2

用'mysqli_error($ this-> conn)'替換'die'字符串。它應該告訴你,如果有一個mysql錯誤 – Jelmergu

+0

@Jelmergu,它仍然沒有顯示,而我點擊刪除 –

回答

1

的問題可能是在該行echo $result = mysqli_query($this->conn, $sql) or die("error to delete employee data");

正如我在一個評論說,更換die字符串mysqli_error($這個 - >連接)應顯示錯誤。

但是一些測試後,我發現,在回波爲變量賦值可能給奇怪的結果,我測試echo $test = "hello" or die("test");,結果發現,無論是hello也不test被顯示在屏幕上,但1被顯示,這可能是邏輯真。

一個更好的方法,如果查詢被執行可能是:

//other code that stayed the same 
    $statement = mysqli_prepare($this->conn, "delete from `cusinfo` WHERE TICKET_ID=? AND AGENT_CODE_STAFF_ID IN (SELECT id FROM `users` where tm_groupid = ?)"); 
    $statement = mysqli_stmt_bind_param($this->conn, $params['id'], $tid); // 
    $sql = msyqli_stmt_execute($statement); // returns either true or false 
    if ($sql === true) { 

     echo "Successfull"; // executing successfull code 
    } 
    else { 
     var_dump(mysqli_stmt_error_list($statement)); // handling error 
     die; 
    } 

這將是預期的方式(他們是「甩死了」)處理一些SQL錯誤。

使用準備好的語句正確的方式將意味着大多數SQL注入能夠被停止,並且使用DELETE查詢,您要確保SQL注入已停止。

注:我在SQL注入方面的專家
注2:我會用PDO準備語句不過,在我看來是更合乎邏輯與

1
echo $result = mysqli_query($this->conn, $sql) or die("error to delete employee data"); 

在上面行你是執行查詢和echo它。但是,如果它沒有執行,你是echo你自己的消息。這會阻止你從實際的錯誤信息。如果您要從TICKET_ID刪除的行不存在,您將無法看到它,只能看到您的消息"error to delete employee data"

要解決這個問題:

echo mysqli_error($this->conn); 

這會給你連接錯誤。

或者:

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
if ($result) { 
    echo "Record deleted successfully"; 
} else { 
    echo "Error deleting record: " . $conn->error; 
} 

許多許多功能,必須處理這些錯誤。 stackoverflow questionphp manualthis

+0

你應該編輯PHP手冊鏈接去'mysqli_error'而不是廢棄'mysql_error' – Jelmergu

+0

@Jelmergu:謝謝你! – Blasanka