probleme avec ma requete sql ( je pense )

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme avec ma requete sql ( je pense )

Re: probleme avec ma requete sql ( je pense )

par sirakawa » 03 mars 2014, 09:00

Indépendamment du fait que Moogli a raison de conseiller de passer à PDO ou mysqli, une façon plus facile à déboguer est au lieu de:
 $requete_creation_article = mysql_query(" INSERT INTO article (`id_article`, `titre_article`, `description_article`, `date_article`, `auteur_article`, `texte_article`, `etat_article`)
  VALUES  ('' , $titre, $description, $date, $auteur, $texte, $publication)");
écrire:
 $requete_creation_article = " INSERT INTO article (`id_article`, `titre_article`, `description_article`, `date_article`, `auteur_article`, `texte_article`, `etat_article`)
  VALUES  ('' , $titre, $description, $date, $auteur, $texte, $publication)";
print "<br />$requete_creation_article<br/>"; //die():  décommenter le die en cas d'erreur pour bien voir ce qui est afiché
$resultat = mysql_query($requete_creation_article);
//et exploiter $resultat si on arrive jusque-là.

Re: probleme avec ma requete sql ( je pense )

par niuxe » 02 mars 2014, 19:19


J'obtiens le message

"requete invalide: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ..."
Pas très malin de couper la définition d'un message d'erreur. MySql est assez précis sur les messages d'erreurs en générale (soucis de syntaxe).
utilise aussi mysql_real_escape_string pour protéger tes requêtes des injections SQL (cf google ;) ).
+1

Mais il est plus pertinent d'utiliser PDO et de préparer ses requêtes. ;) La serie des mysql_connect, mysql_query, etc. est appelée à disparaître. Donc faut oublier ce mode de connexion à MySql. Si on ne veut pas utiliser PDO et que l'on veut se connecter à MySql, autant utiliser mysqli

Pour chipoter, sprintf() est pas mal comme couche supplémentaire de contrôle de données

Sinon, je pense avoir trouver ton souci (un champ récupère une apostrophe dans les données). Il faut que tu échappes ces données.

Re: probleme avec ma requete sql ( je pense )

par banban55 » 02 mars 2014, 15:48

voici ma requete mais j'obtiens encore le meme problème
INSERT INTO article (`id_article`, `titre_article`, `description_article`, `date_article`, `auteur_article`, `texte_article`, `etat_article`)
VALUES ("",'.$titre.', '.$description.', '.$date.', '.$auteur.', '.$texte.', '.$publication.')

Re: probleme avec ma requete sql ( je pense )

par moogli » 02 mars 2014, 15:22

salut

commence par afficher ta requête tu devrais comprendre le problème.

non toujours pas ?

en SQL les chaines de caractères doivent être délimitées par des ' (comme tu peux le faire en php en fait).
or toi tu le fait pas du coup erreur :)

utilise aussi mysql_real_escape_string pour protéger tes requêtes des injections SQL (cf google ;) ).



@+

probleme avec ma requete sql ( je pense )

par banban55 » 02 mars 2014, 15:13

Bonjour,

Je seche devant une erreur sur ma requete sql, d'apres vous ? d'ou peut venir l'erreur

J'obtiens le message

"requete invalide: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ..."

voici ma table sql
CREATE TABLE IF NOT EXISTS `article` (
  `id_article` int(11) NOT NULL AUTO_INCREMENT,
  `titre_article` varchar(255) NOT NULL,
  `description_article` text NOT NULL,
  `date_article` int(11) NOT NULL,
  `auteur_article` varchar(255) NOT NULL,
  `texte_article` text NOT NULL,
  `etat_article` int(11) NOT NULL COMMENT '0 = inactif',
  PRIMARY KEY (`id_article`)
)
le traitement de mon formulaire.
<?php 
					// recuperation des variables du formulaire
						// déclaration des variables
						$titre = $_POST['titre'];
						$description = $_POST['description'];
						$publication = $_POST['publication'];
						$auteur = $_POST['auteur'];
						$date = time();
						$texte = $_POST['contenu_text'];
						
						
						
						
					$requete_creation_article = mysql_query("
															INSERT INTO article 
															(`id_article`, `titre_article`, `description_article`, `date_article`, `auteur_article`, `texte_article`, `etat_article`)
															VALUES 
															('' , $titre, $description, $date, $auteur, $texte, $publication)");
					if (!$requete_creation_article)
						{
							die('Requête invalide : ' . mysql_error());
						}
					else
						{
						 echo '<em>L\'ajout a été éffectué avec succès</em>';
						}
					
					
				?>