注意:使用update语句进行数组到字符串转换

时间:2014-04-03 22:44:33

标签: php mysql sql pdo

我正在尝试创建一个系统来激活或停用我的帖子。

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

然后如果$ status == 0我会将我的帖子转换为活动状态,如果$ status == 1我会将我的帖子变为非活动状态。

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

我遇到此错误:

注意:$ updateStatus中的数组到字符串转换= $ pdo-> prepare(“UPDATE ...)

我已在括号中使用{$ 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();
        }
    }  

1 个答案:

答案 0 :(得分:1)

此错误是因为$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,而不用担心绑定那个值。