Requête qui ne fonctionne pas
MOBIL75
-
jeremy.s Messages postés 1226 Date d'inscription Statut Membre Dernière intervention -
jeremy.s Messages postés 1226 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'ai fait une requête mysql UPDATE mais elle n'a pas l'air de fonctionner.
Comment cela se fait-il ?
Comment cela se fait-il ?
$stratos = $bdd->prepare("UPDATE Annonce SET type_transaction=".$_POST['type_transaction'].", type_bien=".$_POST['type_bien'].", departement=".$_POST['departement'].", ville=".$_POST['ville'].", adresse=".$_POST['adresse'].", code_postal=".$_POST['code_postal'].", nbr_piece=".$_POST['nbr_piece'].", nbr_chambre=".$_POST['nbr_chambre'].", nbr_toilettes=".$_POST['nbr_toilettes'].", nbr_sdb=".$_POST['nbr_sdb'].", type_cuisine=".$_POST['type_cuisine'].", etage=".$_POST['etage'].", ascenseur=".$_POST['ascenseur'].", balcon=".$_POST['balcon'].", surface_balcon=".$_POST['surface_balcon'].", terrasse=".$_POST['terrasse'].", surface_terrasse=".$_POST['surface_terrasse'].", piscine=".$_POST['piscine'].", option=".$_POST['option'].", etat_bien=".$_POST['etat_bien'].", surface_carrez=".$_POST['surface_carrez'].", surface_autre=".$_POST['surface_autre'].", dpe=".$_POST['dpe'].", ges=".$_POST['ges'].", prix=".$_POST['prix'].", prix_vendeur=".$_POST['prix_vendeur'].", commission_agence=".$_POST['commission_agence'].", ref_annonce=".$_POST['ref_annonce'].", description=".$_POST['description'].", exclu=".$_POST['exclu']." WHERE ref_annonce = ?"); $stratos->execute(array($_GET['ref']));
A voir également:
- Requête qui ne fonctionne pas
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
- Erreur de requete facebook - Forum Facebook
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ? ✓ - Forum Loisirs / Divertissements
- L'opérateur ou l'administrateur a refusé la requête ✓ - Forum Windows
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Android
6 réponses
Bonjour
Ta requête ne fonctionne pas car elle est incorrecte.
Il te manque des guillemets (simples ou doubles, peu importe) autour des valeurs.
Tous les " que tu as mis sont des délimiteurs de chaines PHP et ne font donc pas partie de la requête.
Ta requête ne fonctionne pas car elle est incorrecte.
Il te manque des guillemets (simples ou doubles, peu importe) autour des valeurs.
Tous les " que tu as mis sont des délimiteurs de chaines PHP et ne font donc pas partie de la requête.
$stratos = $bdd->prepare("UPDATE Annonce SET type_transaction='".$_POST['type_transaction']."',...Mais il y a quelque chose de totalement incohérent (et très dangereux) dans ta façon d'utiliser PDO : pourquoi mets-tu une valeur en paramètre (avec le ?) et tous les autres 'en dur' ?
Et comme ça c'est bien ?
Parce que ça me retourne l'erreur: "Fatal error: Call to a member function fetch() on a non-object in /homez.314/immobilifmi/www/controlpanel/prolog/edit.php on line 88".
J'ai utilisé la boucle suivante:
$stratos = $bdd->query("UPDATE Annonce SET type_transaction='".$_POST['type_transaction']."', type_bien='".$_POST['type_bien']."', departement='".$_POST['departement']."', ville='".$_POST['ville']."', adresse='".$_POST['adresse']."', code_postal='".$_POST['code_postal']."', nbr_piece='".$_POST['nbr_piece']."', nbr_chambre='".$_POST['nbr_chambre']."', nbr_toilettes='".$_POST['nbr_toilettes']."', nbr_sdb='".$_POST['nbr_sdb']."', type_cuisine='".$_POST['type_cuisine']."', etage='".$_POST['etage']."', ascenseur='".$_POST['ascenseur']."', balcon='".$_POST['balcon']."', surface_balcon='".$_POST['surface_balcon']."', terrasse='".$_POST['terrasse']."', surface_terrasse='".$_POST['surface_terrasse']."', piscine='".$_POST['piscine']."', option='".$_POST['option']."', etat_bien='".$_POST['etat_bien']."', surface_carrez='".$_POST['surface_carrez']."', surface_autre='".$_POST['surface_autre']."', dpe='".$_POST['dpe']."', ges='".$_POST['ges']."', prix='".$_POST['prix']."', prix_vendeur='".$_POST['prix_vendeur']."', commission_agence='".$_POST['commission_agence']."', ref_annonce='".$_POST['ref_annonce']."', description='".$_POST['description']."', exclu='".$_POST['exclu']."' WHERE ref_annonce='".$_GET['ref']."'");
Parce que ça me retourne l'erreur: "Fatal error: Call to a member function fetch() on a non-object in /homez.314/immobilifmi/www/controlpanel/prolog/edit.php on line 88".
J'ai utilisé la boucle suivante:
while ($stratos->fetch()) { echo '@AVANT CONDITION<br /><br />'; if (strlen($_POST['code_postal']) != '5'){ echo '<script>alert("Ce code postal n\'est pas valide !");</script>'; } //else if($_GET['ref'] != $_POST['ref_annonce']){ rename($_GET['ref'], $_POST['ref_annonce']); else { echo $stratos->fetch() == true ? '<script>alert("Annonce Modifiée !");</script>' : '<script>alert("Une erreur est survenue !");</script>'; echo'<meta http-equiv="refresh" content="0; URL=gerer_annonces">'; } }
Non, ça n'est pas bien.
Ta requête est une mise à jour, faire un query et un fetch dessus ne veut rien dire.
Il faut utiliser prepare et execute comme tu le faisais dans ton message initial.
Ta requête est une mise à jour, faire un query et un fetch dessus ne veut rien dire.
Il faut utiliser prepare et execute comme tu le faisais dans ton message initial.
Je mets quoi dans l'array de execute ?
J'ai essayé ça et ça ne marche pas.
J'ai essayé ça et ça ne marche pas.
$stratos = $bdd->prepare("UPDATE Annonce SET type_transaction='".$_POST['type_transaction']."', type_bien='".$_POST['type_bien']."', departement='".$_POST['departement']."', ville='".$_POST['ville']."', adresse='".$_POST['adresse']."', code_postal='".$_POST['code_postal']."', nbr_piece='".$_POST['nbr_piece']."', nbr_chambre='".$_POST['nbr_chambre']."', nbr_toilettes='".$_POST['nbr_toilettes']."', nbr_sdb='".$_POST['nbr_sdb']."', type_cuisine='".$_POST['type_cuisine']."', etage='".$_POST['etage']."', ascenseur='".$_POST['ascenseur']."', balcon='".$_POST['balcon']."', surface_balcon='".$_POST['surface_balcon']."', terrasse='".$_POST['terrasse']."', surface_terrasse='".$_POST['surface_terrasse']."', piscine='".$_POST['piscine']."', option='".$_POST['option']."', etat_bien='".$_POST['etat_bien']."', surface_carrez='".$_POST['surface_carrez']."', surface_autre='".$_POST['surface_autre']."', dpe='".$_POST['dpe']."', ges='".$_POST['ges']."', prix='".$_POST['prix']."', prix_vendeur='".$_POST['prix_vendeur']."', commission_agence='".$_POST['commission_agence']."', ref_annonce='".$_POST['ref_annonce']."', description='".$_POST['description']."', exclu='".$_POST['exclu']."' WHERE ref_annonce='".$_GET['ref']."'"); $stratos->execute(array($_GET['ref'])); echo '@APRES UPDATE<br /><br />'.$_POST['code_postal']; while ($modif = $stratos->fetch()) { echo '@AVANT CONDITION<br /><br />'; if (strlen($_POST['code_postal']) != '5'){ echo '<script>alert("Ce code postal n\'est pas valide !");</script>'; } //else if($_GET['ref'] != $_POST['ref_annonce']){ rename($_GET['ref'], $_POST['ref_annonce']); else { echo $modif->fetch() == true ? '<script>alert("Annonce Modifiée !");</script>' : '<script>alert("Une erreur est survenue !");</script>'; echo'<meta http-equiv="refresh" content="0; URL=gerer_annonces">'; } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Visiblement, tu n'as aucune idée de l'utilisation de PDO.
Alors dans un premier temps relis la doc.
Ensuite, essaye avec une requête beaucoup plus courte, disons avec 3 champs au maximum, ce sera beaucoup plus facile à mettre au point.
Et seulement après, on pourras s'attaquer au problème complet.
Alors dans un premier temps relis la doc.
Ensuite, essaye avec une requête beaucoup plus courte, disons avec 3 champs au maximum, ce sera beaucoup plus facile à mettre au point.
Et seulement après, on pourras s'attaquer au problème complet.
Salut !
Je suis d'accord avec le père, https://www.php.net/manual/fr/pdo.prepare.php
Renseigne toi et apprend à utiliser l'objet. Faire de l'impro ne mène à rien.
Regarde les exemples de la doc, ils sont la pour ca !
1) Tu fais ta requete
2) Tu fais un prepare
3) Soit tu fais un bindValue, soit tu execute avec les valeurs
4) Tu récupères avec un fetch. Mais dans le cas qu'un update, pas besoin de fetch la requete ne renvoie rien.
Je suis d'accord avec le père, https://www.php.net/manual/fr/pdo.prepare.php
Renseigne toi et apprend à utiliser l'objet. Faire de l'impro ne mène à rien.
Regarde les exemples de la doc, ils sont la pour ca !
1) Tu fais ta requete
2) Tu fais un prepare
3) Soit tu fais un bindValue, soit tu execute avec les valeurs
4) Tu récupères avec un fetch. Mais dans le cas qu'un update, pas besoin de fetch la requete ne renvoie rien.