Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/02/2008, 22h51   #1
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 883
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 883
Points : 1 320
Points : 1 320
Par défaut [SQL] pb avec une requête envoyée à une bdd chez free

Bonsoir,

j'ai envoyé la requête suivante : INSERT INTO `forum` ( `validee` ) VALUES ( '0');
à une bdd chez Free. La table "forum" a 2 champs : "texte" de type text et "validee" de type tinyint(1). J'ai obtenu un msg d'erreur alors que j'ai une autre table Mysql en local, ds laquelle j'ai créé la même table et que j'ai fait la même requête via phpmyadmin, et que ça a bien marché. Qqun pourrait-il m'expliquer et me donner la solution ?
Merci d'avance.
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2008, 22h58   #2
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
Bonsoir,
il nous faut un peu de code.

Cordialement,
DaRiaN.
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2008, 23h13   #3
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 883
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 883
Points : 1 320
Points : 1 320
En fait, j'ai développé en php une interface qui permet d'envoyer une requête sql à cette base mysql et d'en lire le résultat s'il y en a un (et d'afficher le msg d'erreur s'il y en a un).
La ligne de code à pb est donc tout simplement :
Code :
$result = mysql_query($sql) or die(mysql_error());
avec ici $sql qui vaut
Code :
INSERT INTO `forum` ( `validee` ) VALUES ( '0');
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2008, 23h15   #4
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
Et bien, dans ce cas, montrez nous le message d'erreur.
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2008, 23h23   #5
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 883
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 883
Points : 1 320
Points : 1 320
Le msg d'erreur est tout simplement le suivant :
INSERT INTO `forum` ( `validee` ) VALUES ( \'0\');
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 '\'0\')' at line 1
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2008, 23h32   #6
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
L'erreur vient des simples quotes... j'aimerais voir la partie du code qui modifie la variable $sql et toutes les variables qu'elle contient.
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 10h16   #7
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 883
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 883
Points : 1 320
Points : 1 320
Je n'ai vu la réponse que mercredi matin. Le code qui modifie $sql est tout simplement : $sql=$_POST['requete'];
vu que j'utilise un formulaire. Et la requête que je saisie est : insert into `forum` (`validee`) values ('0')
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 11h21   #8
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
Oui, sauf que chez FREE, si mes souvenirs sont bons, magic_quotes est sur ON, donc vous devez passer votre requête à stripslashes pour retirer les slashes inutilement ajoutés.
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 11h52   #9
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 883
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 883
Points : 1 320
Points : 1 320
J'ai modifié le code qui envoit la requête ; maintenant, c'est
Code :
@$result = mysql_query('".stripslashes($sql)."') or die(mysql_error());
, mais j'ai tjs le msg d'erreur...
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2008, 01h09   #10
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
Je viens de faire un test sur l'un des serveurs de FREE. Avec l'ajout de la fonction stripslashes() cela fonctionne parfaitement.

Un exemple :

Code :
1
2
3
4
5
6
7
<?php
 
  $sql = stripslashes($_POST['requete']);
 
  $result = mysql_query($sql) or die(mysql_error());
 
?>
PS: votre précédent code est totalement buggé.
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2008, 15h36   #11
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 883
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 883
Points : 1 320
Points : 1 320
Effectivement, avec ce code, ça marche bien : d'abord, ouf ! enfin ! et merci ! Et sinon, pouvez m'expliquer les bugs (que je ne meure pas idiot). En effet, le @ devant $result, je l'ai rajouté en suivant un conseil, et le '".stripslashes($sql)."', je l'avais recopié d'un code existant (sauf qu'au lieu de stripslashes, c'était addslashes), et vu que ça venait d'un site qui tourne bien, je faisais confiance (ça fait moins d'un an que je connais le php, et moins de 2 ans, le html).
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2008, 16h24   #12
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
Vous auriez du écrire ceci :

Code :
@$result = mysql_query(stripslashes($sql)) or die(mysql_error());
Au lieu de cela, vous avez considéré la fonction stripslashes comme une chaine de caractères, vous n'avez pas compris le principe des guillemets simples ou doubles.

Code :
$chaine = 'chaine de caractères '.fonction()." $variable !!!";
La fonction addslashes() ajoute des \ pour protéger certains caractères, la fonction stripslashes() les retire.

Chez FREE, magic_quotes est actif, donc les valeurs des formulaires sont passées automatique à addslashes, mais cela rentre en conflit avec certains traitements. Je pense que vous l'avez constaté.
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h16.


 
 
 
 
Partenaires

Hébergement Web