Problème avec un UPDATE [Résolu]

Signaler
Messages postés
56
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
8 avril 2021
-
Messages postés
32045
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 avril 2021
-
Bonjour,
J'ai une requete UPDATE qui ne fonctionne pas.

  $sql = "SELECT contenant FROM membres WHERE id = :id";
  $pdostat = $bdd->prepare($sql);
  $pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
  $pdostat->execute();
  $resultat = $pdostat->fetch();
if (!empty($resultat )) { 
$contenant = $resultat['contenant'];
	    $pdostat = $bdd->prepare('UPDATE membres SET contenant = REPLACE (contenant, "/objets/rien.gif") WHERE id =:id ');
        $pdostat->bindValue(':contenant', $contenant, PDO::PARAM_STR);
        $pdostat->bindValue(':id', $id, PDO::PARAM_INT);
        $pdostat->execute();
		}


PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\wamp64\www\abandon_contenant.php on line 19
Call Stack

Si je vire le bindValue de "contenant" j'ai une autre erreur:

PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de ') WHERE id =1' à la ligne 1 in C:\wamp64\www\abandon_contenant.php on line 19

2 réponses

Messages postés
32045
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 avril 2021
3 382
Bonjour,

Tu fais un REPLACE .... sauf que cette fonction attend 3 paramètres....

De plus, est ce que tu as une variable php du nom de $contenant ?
Si oui, quel "replace" veux tu faire ?
Pourquoi ne fais tu pas le replace en PHP AVANT de lui passer la variable dans le bind ?

Messages postés
56
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
8 avril 2021

En analysant bien mes besoins, j'ai fait au plus simple. Un update simple écrase l'ancienne valeur du champ "contenant" ...

$pdostat = $bdd->prepare('UPDATE membres SET contenant = "/objets/rien.gif"  WHERE id =:id');
        $pdostat->bindValue(':id', $id, PDO::PARAM_INT);
        $pdostat->execute();
Messages postés
32045
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 avril 2021
3 382
donc c'est résolu ?
Merci de marquer la discussion en tant que telle dans ce cas.