Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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/mysqli delete函数已被访问,但它不会删除该项_Php_Oop_Mysqli - Fatal编程技术网

php/mysqli delete函数已被访问,但它不会删除该项

php/mysqli delete函数已被访问,但它不会删除该项,php,oop,mysqli,Php,Oop,Mysqli,我正在用php为mysqli制作一个oop delete函数。 该函数已执行,但不会删除给定项 这是我的代码: PHP(Mysqli类) PHP(调用函数的地方) 因此,通过上面的代码,我试图删除带有id的项目。id位于按钮中,这就是我们使用AJAX的原因 有人能解释一下为什么上面的代码没有按id删除项目吗?$mysqli_函数::delete()看起来它是静态调用delete(),但我不确定,因为您使用的是$mysqli_函数,而不是类名,所以: 没有$this,因为它不是对象 无论如何都不

我正在用php为mysqli制作一个oop delete函数。 该函数已执行,但不会删除给定项

这是我的代码:

PHP(Mysqli类)

PHP(调用函数的地方)

因此,通过上面的代码,我试图删除带有id的项目。id位于按钮中,这就是我们使用AJAX的原因


有人能解释一下为什么上面的代码没有按id删除项目吗?

$mysqli_函数::delete()
看起来它是静态调用
delete()
,但我不确定,因为您使用的是
$mysqli_函数
,而不是类名,所以:

  • 没有
    $this
    ,因为它不是对象
  • 无论如何都不会调用
    \u构造()
你应该试试:

$db = new mysqli_Functions();
$db->delete("DELETE FROM modules WHERE id=" , $_POST['id']);

注意
->
而不是

为什么要将该方法作为静态调用? 你应该把它称为公共的,类似这样的:

$id = $_POST["id"];
$query = "DELETE FROM modules WHERE id = {$id}";

$mysqli = new mysqli_Functions();
$mysqli->delete($query, $id);

请不要做“oop函数”。使用原始mysqli而不使用任何中间类。此外,您的代码容易受到SQL注入的攻击。您必须使用准备好的语句。在Ajax函数中id在哪里分配了值?Select*没有效率,您不应该真正拥有selectall函数。我已经在index.php上这样做了,因为
$mysqli_Functions=new mysqli_Functions()但是您使用的是静态调用
不要这样做。
$.ajax({
          type: 'post',
          url: 'actions/module-delete.php',
          data: {'id': id}
        });
        // Reload
        setTimeout(function(){
          location.reload();
        }, 2000);
  }
$db = new mysqli_Functions();
$db->delete("DELETE FROM modules WHERE id=" , $_POST['id']);
$id = $_POST["id"];
$query = "DELETE FROM modules WHERE id = {$id}";

$mysqli = new mysqli_Functions();
$mysqli->delete($query, $id);