MySQL UPDATE查询(PDO)莫名其妙地无法正常工作

时间:2016-11-20 07:01:23

标签: php mysql pdo

我一直在网站上工作并且最近添加了一些更改,尽管试图注释掉所说的更改,我的UPDATE查询无法正常工作 - 我一直在试图弄清楚为什么最后3个小时无济于事。

if (isset($_POST['submit']))
{
    if (count($rated)<$_SESSION['id'])
    {
        $difference = $_SESSION['id'] - count($rated);

        $rated = implode(',',$rated);
        while ($difference >= 0)
        {
            $rated .= "0,";
            $difference--;
        }
        $rated = explode(',',$rated);
    }

    $rated[$_SESSION['id']] = $_POST['rating'];

    $ratings = 0;
    $ratingsadded = 0;
    foreach ($rated as $user => $rating)
    {
        if ($rating != 0)
        {
            $query = $db->prepare("SELECT id, active FROM accounts WHERE id = :id");
            $query->execute(array('id' => $user));
            $useractive = $query->fetch();

            if ($useractive['active'] == 1 || $user == 0 || $user == 50)
            {
                $ratings++;
                $ratingsadded += $rating;
            }
            else
            {
                $rated[$user] = 0;
            }
        }
    }
    $ratingtotal = $ratingsadded / $ratings;

    $query = $db->prepare("UPDATE accounts SET rating = :rating, rated = :rated WHERE id = :id");
    $query->execute(array('rating' => $ratingtotal, 'rated' => implode(",",$rated), 'id' => $user['id']));
    header('Location: ?user=' . $_GET['user']);
}

注意:最后的查询是我所指的那个。

次要说明:我知道我的代码中存在一些效率低下的问题。

完整代码:http://pastebin.com/ybb71U6k

2 个答案:

答案 0 :(得分:0)

我认为你应该像这样编写你的执行

$query->execute(array(':rating' => $ratingtotal, ':rated' => implode(",",$rated), ':id' => $user['id']));

注意:在每个命名参数前面。
参考:http://php.net/manual/en/pdo.prepare.php

答案 1 :(得分:0)

虽然Rajdeep删除了他的答案,但我打算回复以下内容:

非常感谢,虽然你的答案有点偏,它指出了我遇到的问题 - 我使用$ user作为foreach键值和查询结果。

我发现了这个问题,这是一个简单的愚蠢的例子,并在其他变量的顶部分配变量。

我很抱歉让你们尽力帮助我解决这个问题。