Problème avec un UPDATE

Résolu/Fermé
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021 - 25 mars 2021 à 18:17
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 26 mars 2021 à 10:47
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
A voir également:

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
25 mars 2021 à 20:02
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 ?

0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
26 mars 2021 à 10:29
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();
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 mars 2021 à 10:47
donc c'est résolu ?
Merci de marquer la discussion en tant que telle dans ce cas.
0