Page 1 sur 1

Probleme requete SQL

Posté : 06 déc. 2011, 18:52
par JeanJack
Bonjour a tous
Je cherche a creer une zone admin qui permet a l'admin de mettre des articles, cependant lorsque l'on choisi de modifier le titre il m'affiche Syntax error or access violation: 'WHERE id=1' at line 1
quand je modifie le contenu ou la date il m'affiche d'autre données supplémentaires dans l'erreur.
<?php
					try
					{ 
						$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
						$bdd = new PDO('mysql:host=localhost;dbname=***************', 'root', '', $pdo_options);
						if (isset($_POST['titre']) AND isset($_POST['contenu']) AND isset($_POST['date_creation_fr']))
						{
							$titre = addslashes($_POST['titre']);
							$contenu = addslashes($_POST['contenu']);
							$date_creation_fr = $_POST['date_creation_fr'];
							if ($_POST['id_article'] == 0)
								{
									$req = $bdd->prepare('INSERT INTO article(titre, contenu, date_creation) VALUES (:titre, :contenu, :date_creation)');
									$req->execute(array('titre' => $titre, 'contenu' => $contenu, 'date_creation' => $date_creation_fr));
										
								}
								else
								{
									$_POST['id_article'] = addslashes($_POST['id_article']);
									$req = $bdd->query('UPDATE article SET titre=' . $titre . ', contenu=' . $contenu . ', date_creation=' . $date_creation_fr . ' WHERE id=' . $_POST['id_article'] . '');
								}
						}
						if (isset($_GET['supprimer_article']))
						{
							$_GET['supprimer_article'] = addslashes($_GET['supprimer_article']);
							$req = $bdd->query('DELETE FROM article WHERE id =' . $_GET['supprimer_article'] . '');
						}
						?>
Je ne met pas tout je pense que l'erreur est ici
La partie INSERT marche parfaitement c'est la UPDATE qui soule ^^

Re: Probleme requete SQL

Posté : 06 déc. 2011, 19:53
par xTG
Utilises PDO::quote() pour protéger les variables.

Re: Probleme requete SQL

Posté : 06 déc. 2011, 21:13
par JeanJack
je remplace juste quote par query ? J'ai plus d'erreur par contre ca m'edite rien :(

Re: Probleme requete SQL

Posté : 06 déc. 2011, 21:39
par xTG
As-tu regardé la documentation de la fonction avant de faire un simple et bête remplacement ?
http://fr2.php.net/manual/fr/pdo.quote.php

Re: Probleme requete SQL

Posté : 06 déc. 2011, 21:51
par JeanJack
nan apres j'ai essayé ca
$req = $bdd->query('UPDATE article SET titre=' . $titre . ', contenu=' . $contenu . ', date_creation=' . $date_creation_fr . ' WHERE id=' . $bdd->quote($_POST['id_article']) . '');
mais ca me remet le message d'erreur sql, j'ai pas trop compris comment utiliser pdo quote avec la documentation :s

Re: Probleme requete SQL

Posté : 07 déc. 2011, 08:15
par xTG
Cette dernière utilisation est déjà mieux, cela dit il faut le faire pour toutes les variables.
Car d'après ton message d'erreur c'est à cause de ce qui se trouve quelque part avant le WHERE que ça plante.

Re: Probleme requete SQL

Posté : 07 déc. 2011, 10:01
par moogli
Cette dernière utilisation est déjà mieux, cela dit il faut le faire pour toutes les variables.
Car d'après ton message d'erreur c'est à cause de ce qui se trouve quelque part avant le WHERE que ça plante.
au vu du nom de champ date_creation, je pense que c'est une date et que donc : date_creation=' . $date_creation_fr . ' va pas fournir une donnée correcte (hé oui une date doit être fournit sous forme de chaine de caractères ;) )

pour ce qui est de l'utilisation de PDO y a un tuto la => http://www.siteduzero.com/tutoriel-3-34 ... x-bdd.html

bonne lecture :)

et pas de requête préparée par pitié :mrgreen:

@+

Re: Probleme requete SQL

Posté : 07 déc. 2011, 20:48
par JeanJack
merci j'ai fait pour les autres données et ca marche :D
Merci aussi pour le tuto je sais a quoi ca sert maintenant

Re: Probleme requete SQL

Posté : 07 déc. 2011, 21:35
par moogli
:mrgreen: :mrgreen: