php - 在 mysql 准备语句中的非对象错误上调用成员函数

标签 php mysql

我正在向我的页面添加关注个人资料功能。

我有一个“关注”按钮,如果数据库中存在包含配置文件 ID 和 session ID 的行,该按钮会更改为“取消关注”。如果此人单击“取消关注”,我会收到一条错误消息:

Fatal error: Call to a member function execute() on a non-object in blah blah line 20

这是我正在运行的代码:

function isFollow($mysqli){
if(isset($_POST['isFollow']))
    {
        $fed_id = filter_input(INPUT_POST, 'fed_id', FILTER_SANITIZE_NUMBER_INT);
        $fing_id = filter_input(INPUT_POST, 'fing_id', FILTER_SANITIZE_NUMBER_INT);
        $isFollow = filter_input(INPUT_POST, 'isFollow', FILTER_SANITIZE_NUMBER_INT);
        if($isFollow==0)
        {
            $fing_time=date("Y-m-d H:i:s");
            $insert_stmt = $mysqli->prepare("INSERT INTO follower (fed_user, fing_user, date_time) VALUES (?, ?, ?)");
            $insert_stmt->bind_param('iii', $fed_id, $fing_id, $fing_time);
            if($insert_stmt->execute())
            {
                header("Location:../?profile=".$fed_id."");
            }
        }elseif($isFollow==1)
        {
            $delete_stmt = $mysqli->prepare("DELETE FROM follower WHERE fed_id = ? AND fing_id = ?");
            $delete_stmt->bind_param('ii', $fed_id, $fing_id);
            if($delete_stmt->execute())
            {
                header("Location:../?profile=".$fed_id."");
            }
        }
}else
{
    die("Error!");
}
}

代码的第一部分有效。它添加了mysql。它只是不会从中删除。

第 20 行是

$delete_stmt = $mysqli->prepare("DELETE FROM follower WHERE fed_id = ? AND fing_id = ?");

请注意,直到这一部分为止它都有效:

elseif($isFollow==1)
    {
        $delete_stmt = $mysqli->prepare("DELETE FROM follower WHERE fed_id = ? AND fing_id = ?");
        $delete_stmt->bind_param('ii', $fed_id, $fing_id);
        if($delete_stmt->execute())
        {
            header("Location:../?profile=".$fed_id."");
        }
    }

最佳答案

这很可能是由于准备失败造成的。尝试用

打印错误
trigger_error( $mysqli->error, E_USER_ERROR );

在第 20 行之后检查出了什么问题。

您可能还想检查$delete_stmt正在使用什么类型和值

print_r( $delete_stmt );

或类似的。

关于php - 在 mysql 准备语句中的非对象错误上调用成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37361120/

相关文章:

php - Codeigniter默认时区问题

php - 以数组形式检索子类别 id

php - 需要双击才能插入数据库

php - 使用 php 的 ics 附件未反射(reflect)在 Outlook 日历中?

php - Mongodb PHP - 带小数的整数

php - 表单检查js的文件上传问题

php - 如何更改 Yii2 中所有 Controller 的默认布局?

php - MySQL 连接查询

mysql - 用于查找共享某些值但不共享其他值的对的 SQL 查询

mysql - 更新 MySQL 数据库上两个不同表的值