Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL更新查询(PDO)莫名其妙地不工作_Php_Mysql_Pdo - Fatal编程技术网

Php MySQL更新查询(PDO)莫名其妙地不工作

Php MySQL更新查询(PDO)莫名其妙地不工作,php,mysql,pdo,Php,Mysql,Pdo,我一直在一个网站上工作,最近添加了一些更改,尽管我试图对所说的更改进行评论,但我的更新查询不起作用-我一直在试图弄清楚为什么在过去的3个小时里没有用 if (isset($_POST['submit'])) { if (count($rated)<$_SESSION['id']) { $difference = $_SESSION['id'] - count($rated); $rated = implode(',',$rated);

我一直在一个网站上工作,最近添加了一些更改,尽管我试图对所说的更改进行评论,但我的更新查询不起作用-我一直在试图弄清楚为什么在过去的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']);
}
if(isset($\u POST['submit']))
{
如果(计数($额定)=0)
{
$rated.=“0”;
美元差额--;
}
$rated=爆炸(',',$rated);
}
$rated[$\u SESSION['id']=$\u POST['rating'];
$ratings=0;
$ratingsadded=0;
foreach($user=>$rating)
{
如果($rating!=0)
{
$query=$db->prepare(“选择id,从id=:id的帐户中活动”);
$query->execute(数组('id'=>$user));
$useractive=$query->fetch();
如果($useractive['active']==1 | |$user==0 | |$user==50)
{
$ratings++;
$ratingsadded+=$rating;
}
其他的
{
$rated[$user]=0;
}
}
}
$ratingtotal=$ratingsadded/$ratings;
$query=$db->prepare(“更新帐户集评级=:评级,评级=:评级,其中id=:id”);
$query->execute(数组('rating'=>$ratingtotal,'rated'=>introde(“,”,$rated),'id'=>$user['id']);
标题('Location:?user='.$\u GET['user']);
}
注意:最后的查询就是我所指的查询

第二点注意:我知道我的代码中有很多低效的地方


完整代码:

我想你应该这样写你的execute

$query->execute(array(':rating' => $ratingtotal, ':rated' => implode(",",$rated), ':id' => $user['id']));
注意:在每个命名参数前面。

参考资料:

我想你应该这样写你的execute

$query->execute(array(':rating' => $ratingtotal, ':rated' => implode(",",$rated), ':id' => $user['id']));
注意:在每个命名参数前面。

参考资料:

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

非常感谢,虽然您的答案有点不正确,但它指出了我的问题-我使用$user作为foreach键值和查询结果

我发现了这个问题,这是一个简单的愚蠢行为,将变量置于其他变量之上


我很抱歉让您费尽心思来帮助我。

虽然Rajdeep删除了他的答案,但我打算回答以下问题:

非常感谢,虽然您的答案有点不正确,但它指出了我的问题-我使用$user作为foreach键值和查询结果

我发现了这个问题,这是一个简单的愚蠢行为,将变量置于其他变量之上


很抱歉,让您费尽心思来帮助我完成此任务。

否,
在命名参数前面不是必需的,它是可选的。看到这个答案,谢谢你的回答,但是,我总是写这样的查询,它们总是有效的。@RajdeepPaul在“非常罕见”的情况下,我看到了冒号需要使用的位置,这取决于一些服务器配置。@Fred ii-哦,我明白了。服务器的默认/自定义配置可以在该场景中发挥作用。谢谢你指出,我会调查的。@RajdeepPaul不客气。正如我所说,这是“非常罕见的”,但它确实时常发生。这是为了记住堆栈上的几个问题。不,
在命名参数前面不是必需的,它是可选的。看到这个答案,谢谢你的回答,但是,我总是写这样的查询,它们总是有效的。@RajdeepPaul在“非常罕见”的情况下,我看到了冒号需要使用的位置,这取决于一些服务器配置。@Fred ii-哦,我明白了。服务器的默认/自定义配置可以在该场景中发挥作用。谢谢你指出,我会调查的。@RajdeepPaul不客气。正如我所说,这是“非常罕见的”,但它确实时常发生。这是为了记住在堆栈上提出的几个问题。似乎这会起作用,我的笔记本电脑刚刚崩溃,所以我现在重新启动它,以便进行测试。我删除了我的评论。我可以看到您在
foreach
循环中使用了
$user
作为数组索引,所以执行语句没有问题。@Rajdeep请参考我的答案,非常感谢。这似乎可以工作,我的笔记本电脑刚刚崩溃,我现在重新启动它以便进行测试。我删除了我的评论。我可以看到您在
foreach
循环中使用了
$user
作为数组索引,所以执行语句没有问题。@Rajdeep请参阅我的答案,非常感谢。是的,这就是我上面的评论。很高兴您的问题得到了解决。:-)是的,这就是我上面的评论。很高兴您的问题得到了解决。:-)