Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除功能不工作_Php_Sql - Fatal编程技术网

Php 删除功能不工作

Php 删除功能不工作,php,sql,Php,Sql,我正在用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

我正在用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");
}
在上面的一行中,您正在执行查询并
echo
it。但是如果它没有被执行,你就是在回显你自己的信息。这将防止您收到实际的错误消息。如果您要从
TICKET\u ID
中删除的行不存在,您无法看到它,您只能看到您的消息
“删除员工数据时出错”

要解决这个问题:

echo mysqli_error($this->conn);
这将导致连接错误

或:

许多函数必须处理这些错误,和

在上面的一行中,您正在执行查询并
echo
it。但是如果它没有被执行,你就是在回显你自己的信息。这将防止您收到实际的错误消息。如果您要从
TICKET\u ID
中删除的行不存在,您无法看到它,您只能看到您的消息
“删除员工数据时出错”

要解决这个问题:

echo mysqli_error($this->conn);
这将导致连接错误

或:


许多函数必须处理这些错误,而且。

问题可能在以下行中:
echo$result=mysqli_query($this->conn,$sql)或die(“删除员工数据的错误”)

正如我在一篇评论中所说,用mysqli_error($this->conn)替换
die
字符串应该会显示一个错误

然而,在一些测试之后,我发现在echo中分配一个变量可能会产生奇怪的结果,我测试
echo$test=“hello”或die(“test”)
并发现屏幕上既没有显示
hello
也没有显示
test
,但显示了
1
,这可能是布尔值true

查看查询是否已执行的更好方法可以是:

    //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,但在我看来,使用PDO更符合逻辑。问题可能在于行
echo$result=mysqli_query($this->conn,$sql)或die(“删除员工数据的错误”)

正如我在一篇评论中所说,用mysqli_error($this->conn)替换
die
字符串应该会显示一个错误

然而,在一些测试之后,我发现在echo中分配一个变量可能会产生奇怪的结果,我测试
echo$test=“hello”或die(“test”)
并发现屏幕上既没有显示
hello
也没有显示
test
,但显示了
1
,这可能是布尔值true

查看查询是否已执行的更好方法可以是:

    //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,但在我看来使用它更合乎逻辑

“无法工作”并不是一个问题描述。为什么不起作用?将
die
字符串替换为
mysqli\u错误($this->conn)
。它应该告诉您是否有mysqlerror@Jelmergu,单击时仍不显示任何内容delete@Jelmergu,对不起,您已经解决了我的问题。我只是用
mysqli\u错误($this->conn)
替换了die,然后它就正常工作了谢谢您的帮助:)“无法工作”不是问题描述。为什么不起作用?将
die
字符串替换为
mysqli\u错误($this->conn)
。它应该告诉您是否有mysqlerror@Jelmergu,单击时仍不显示任何内容delete@Jelmergu,对不起,您已经解决了我的问题。我只是用
mysqli\u错误($this->conn)
替换了die,然后它就正常工作了谢谢你帮我:)你应该编辑PHP手册链接,转到
mysqli\u error
,而不是一个不推荐的
mysql\u error
@Jelmergu:谢谢你!你应该编辑PHP手册链接,转到
mysqli\u错误
,而不是不推荐的
mysql\u错误
@Jelmergu:谢谢你!