Requête dans une boucle foreach
Résolu/Fermé3 réponses
yg_be
Messages postés
23429
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
Ambassadeur
1 559
14 avril 2022 à 14:46
14 avril 2022 à 14:46
bonjour,
comment détermines-tu quel enregistrement est mis à jour?
comment détermines-tu quel enregistrement est mis à jour?
jordane45
Messages postés
38389
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2025
4 727
14 avril 2022 à 15:35
14 avril 2022 à 15:35
Bonjour
Commence par ça
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Commence par ça
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
J'ai modifié mon code de sorte de voir les erreurs
et j'obtien comme erreur :
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp64\www\LEM_ControleAcces\Php\recupdonnee.php on line 32
( ! ) PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp64\www\LEM_ControleAcces\Php\recupdonnee.php on line 32
try { $db = new PDO('mysql:host=localhost;dbname=bdd_ctrl_acces_dev', 'root', ''); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e){ die('Erreur de connexion à la base de données :' .$e->etMessage()); } $req2 = $db->prepare("SELECT IP, Etat, statut FROM lecteur_oui"); $req2->execute(); $row2 = $req2->fetchAll(); if($row2){ foreach ($row2 as $etat){ $ping = exec("ping -n 1 " . $etat['IP']); if (strpos($ping, "perte 100%")) { $newetat = "non"; } else { $newetat = "oui"; } if($etat['Etat'] != $newetat){ $etat['Etat'] = $newetat; $etat['statut'] = 'non-vérifié'; $sql = 'UPDATE lecteur_oui SET Etat = ? AND statut = ?'; $a = array('Etat'=>$etat['Etat'], 'statut='=>$etat['statut']); try{ $req = $db -> prepare($sql); $req ->execute($a); } catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($etat); } } echo $etat['IP']." - ".$etat['Etat']." - ".$etat['statut']; } }
et j'obtien comme erreur :
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp64\www\LEM_ControleAcces\Php\recupdonnee.php on line 32
( ! ) PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp64\www\LEM_ControleAcces\Php\recupdonnee.php on line 32
yg_be
Messages postés
23429
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
1 559
>
someone
14 avril 2022 à 16:24
14 avril 2022 à 16:24
Dans une requête UPDATE, les champs à modifier ne sont pas séparés par
AND.
someone
>
yg_be
Messages postés
23429
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
14 avril 2022 à 16:53
14 avril 2022 à 16:53
J'ai enlever le AND mais toujours le même problème
jordane45
Messages postés
38389
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2025
4 727
>
someone
14 avril 2022 à 16:24
14 avril 2022 à 16:24
Si tu utilises l'écriture avec les ? Il ne faut pas d'Array associatif dans le execute.
someone
>
jordane45
Messages postés
38389
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2025
14 avril 2022 à 16:55
14 avril 2022 à 16:55
$sql = 'UPDATE lecteur_oui SET Etat = :Etat , statut = :statut WHERE IP = '.$etat['IP']; $a = array('Etat'=>$etat['Etat'], 'statut='=>$etat['statut'], 'IP'=> $etat['IP']); try{ $req = $db -> prepare($sql); $req ->execute($a);
J'ai enlever les ? et fait comme ça mais j'ai toujours la même erreur
jordane45
Messages postés
38389
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2025
4 727
14 avril 2022 à 16:58
14 avril 2022 à 16:58
$sql = 'UPDATE lecteur_oui SET Etat = :etat , statut = :statut WHERE IP = :ip'; $a = array(':etat'=>$etat['Etat'], ':statut='=>$etat['statut'], ':ip'=> $etat['IP']);
14 avril 2022 à 15:29