2017-06-01 56 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