0

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();

コードを実行しているときのエラーは次のとおりです。

Array ( [0] => 42000 [1] => 1064 [2] => SQL 構文にエラーがあります。'WHERE pseudo_medaille=1 の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください' at 行 1 ) 1

私を助けてください。どこでも検索しました :( !? (英語が下手で申し訳ありません。母国語ではありません)。

4

0 に答える 0