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