注意:使用更新语句将数组转换为字符串


Notice: Array to string conversion with update statment

我试图创建一个系统来激活或不活动我的帖子。

首先,我从我的网址中获取我的sts,并存储在我的$status中。

然后,如果 $status == 0,我会将我的帖子转换为活动

,如果 $status == 1,我会将我的帖子转换为非活动。

我正在尝试使用 PDO 执行此操作,但收到以下错误:

我遇到此错误:

注意:数组到字符串的转换 $updateStatus = $pdo->prepare("更新...

我已经在括号中使用 {$data},但它不起作用!

那里有人可以帮我吗?

 if(isset($_GET['sts']))
    {
        $topicId = $_GET['id'];
        $status = $_GET['sts'];
        if($status == '0')
        {
            $data = array('status' => '1');
            $updateStatus = $pdo->prepare("UPDATE news SET {$data} WHERE id=:id");  
            $updateStatus->bindValue(':id',$topicId );
            $updateStatus->execute();
        }
        else
        {
            $data = array('status' => '0');
            $updateStatus = $pdo->prepare("UPDATE news SET {$data} WHERE id=:id");  
            $updateStatus->bindValue(':id', $topicId);
            $updateStatus->execute();
        }
    }  

此错误是因为$data是您尝试与字符串连接的数组。相反,请执行如下操作:

$updateStatus = $pdo->prepare("UPDATE news SET status=:status WHERE id=:id");  
$updateStatus->bindValue(':status', 1);
$updateStatus->bindValue(':id', $topicId);
$updateStatus->execute();

从技术上讲,由于status是通过脚本而不是用户数据设置的,因此不需要使用 PDO::prepare() 进行清理。 所以你可以说SET status=1,而不必担心绑定该值。