查询工作在phpmyadmin上,但不在php脚本中

查询工作在phpmyadmin上,但不在php脚本中,php,mysql,Php,Mysql,我已经尝试过类似问题的其他解决方案,但似乎没有任何效果。正如标题所说,我需要在数据库上执行的查询在phpMyAdmin上运行良好,但在php函数中使用时不起作用。这是common_functions.php: function eliminaRistorante($id_ristorante) { global $conn; // query su ristorante $sql = "DELETE FROM ristorante WHERE id_risto

我已经尝试过类似问题的其他解决方案,但似乎没有任何效果。正如标题所说,我需要在数据库上执行的查询在phpMyAdmin上运行良好,但在php函数中使用时不起作用。这是common_functions.php:

function eliminaRistorante($id_ristorante) {
    global $conn;

    // query su ristorante
    $sql = "DELETE FROM ristorante WHERE id_ristorante = $id_ristorante";

    echo $sql;

    if($conn->query($sql) === TRUE) {
        return true;
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
        return false;
    }
}
include('includes/logic/common_functions.php');

if (isset($_POST['del'])) {
    $id_ristorante = $_POST['del'];

    eliminaRistorante($id_ristorante);
    header('location: admin/ristorante.php');
}
我放置了一个echo语句,以查看查询是否有效正确。 这是输出:

从ristorante中删除,其中id_ristorante=5 致命错误:未捕获错误:在C:\xampp\htdocs\projects\db_ristorante\includes\logic\common_functions.php:57堆栈跟踪:#0 C:\xampp\htdocs\projects\db_ristorante\hold.php(8):eliminaRistorante('5')#1{main}在第57行的C:\xampp\htdocs\projects\db\u ristorante\includes\logic\common\u functions.php中抛出

最后,我尝试了以下解决方案:

在这个问题中,用户友好地分享了我也考虑过的其他解决方案

未捕获错误:在中对null调用成员函数query()

您的$conn对象为空。您没有初始化PDO实例


这里是一个介绍,关于如何做到这一点,

调用null上的成员函数query()
并不意味着查询有问题,它意味着
$conn
为null。最好将
$conn
作为参数传递到函数中,而不是使用全局变量。此外,您还需要查看准备好的语句,而不是将字符串连接到查询中。由于这两个原因,我得到了出现错误的原因,我按照@droopsnoot的建议进行了操作,并将$conn作为参数传递,从而解决了问题。