PDO更新错误

时间:2013-09-26 19:05:49

标签: php mysql pdo

我正在尝试为我用PHP制作的战争游戏制作一个UPDATE脚本。 这是包含错误的脚本:

if(($donnees_reglages['maj_attaques']+86390) <= time())
{
    $selection_joueurs = $bdd->query('SELECT id FROM membres');
    while($donnees_joueurs = $selection_joueurs->fetch())
    {
        $maj_medailles= "";
        $bdd->exec('INSERT INTO medailles(pseudo_medaille) VALUES('.$donnees_joueurs['id'].')');
        /* Médailles pour les ressources */
        $selection_pieces = $bdd->query('SELECT MAX(piece_or) AS or_max, 
                                                MAX(pierre) AS pierre_max 
                                           FROM ressources 
                                          WHERE pseudo_ressource='.$donnees_joueurs['id'].'');
        $donnees_pieces = $selection_pieces->fetch();
        $selection_pieces->closeCursor();

        //Or
        if($donnees_pieces['or_max'] >= 10000)
        {
            $maj_medailles .= 'aisance_economique=aisance_economique+1';
        }

        if($donnees_pieces['or_max'] >= 30000)
        {
            if(!empty($maj_medailles))
                $maj_medailles .= ', ';
            $maj_medailles .= 'richesse_economique=richesse_economique+1';
        }

        //Pierre
        if($donnees_pieces['pierre_max'] >= 10000)
        {
            if(!empty($maj_medailles))
                $maj_medailles .= ', ';
            $maj_medailles .= 'producteur_local=producteur_local+1';
        }

        if($donnees_pieces['pierre_max'] >= 30000)
        {
            if(!empty($maj_medailles))
                $maj_medailles .= ', ';
            $maj_medailles .= 'producteur_national=producteur_national+1';
        }

        /* Médailles pour les forteresses */
        $selection_max_forteresses = $bdd->query('SELECT COUNT(*) AS nb_id 
                                                    FROM forteresses 
                                                   WHERE membre_forteresse='.$donnees_joueurs['id'].'');
        $donnees_max_forteresses = $selection_max_forteresses->fetch();
        $selection_max_forteresses->closeCursor();

        $joueurs_forteresses[] = $donnees_joueurs['id'];
        $nb_forteresses[] = $donnees_max_forteresses['nb_id'];
        if($donnees_max_forteresses['nb_id'] == 2)
        {
            if(!empty($maj_medailles))
                $maj_medailles .= ', ';
            $maj_medailles .= 'vassal=vassal+1';
        }

        if($donnees_max_forteresses['nb_id'] >= 5)
        {
            if(!empty($maj_medailles))
                $maj_medailles .= ', ';
            $maj_medailles .= 'seigneur=seigneur+1';
        }

        /* Médailles pour les recherches */
        $selection_recherches = $bdd->query('SELECT * 
                                               FROM recherches 
                                              WHERE pseudo_recherche='.$donnees_joueurs['id'].'');
        $donnees_recherches = $selection_recherches->fetch();
        $selection_recherches->closeCursor();
        if($donnees_recherches['archer'] == 1 && 
           $donnees_recherches['soldat'] == 1 && 
           $donnees_recherches['cavalier'] == 1 && 
           $donnees_recherches['monstre'] == 1 && 
           $donnees_recherches['heros'] == 1)
        {
            if($donnees_recherches['colon'] == 1 && $donnees_recherches['transfert'])
            {
                if(!empty($maj_medailles))
                    $maj_medailles .= ', ';
                $maj_medailles .= 'genie_militaire=genie_militaire+1';
            }
            else
            {
                if(!empty($maj_medailles))
                    $maj_medailles .= ', ';
                $maj_medailles .= 'conquistador=conquistador+1';
            }
        }

        $bdd->exec("UPDATE medailles 
                       SET $maj_medailles 
                     WHERE pseudo_medaille=".$donnees_joueurs['id']."") or exit(print_r($bdd->errorInfo()));
    }
    $selection_joueurs->closeCursor();

当我运行代码时,这是我的错误:

  

数组([0] =&gt; 42000 [1] =&gt; 1064 [2] =&gt;您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以获取正确的语法在第1行'WHERE pseudo_medaille = 1'附近1)

请帮帮我。我到处搜索:(!? (抱歉我的英语不好,不是我的母语)。

0 个答案:

没有答案