[RESOLU] Variable (prepare & execute)

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 : [RESOLU] Variable (prepare & execute)

Re: [RESOLU] Variable (prepare & execute)

par sirakawa » 30 nov. 2012, 17:01

Sur les quotes:
moi je mets:
$requete = "insert into $NomTable set `colonne`='$valeur';";
mais comme je ne me sers pas de pdo...

Re: [RESOLU] Variable (prepare & execute)

par kakou34 » 30 nov. 2012, 16:16

Oui, je voulais dire adieu mais dans le contexte je voulais dire que je suis pas prêt de vous quittez ^^

Je suis débutant en PHP.

Vue la rapidité et le nombre de réponse en si peu de temps, sans avoir des gens qui te disent "Google est ton ami, sujet déja existant etc" je pense que ce forum va être dans mes favoris.

Par ailleurs, merci de l'information xTG

Re: [RESOLU] Variable (prepare & execute)

par Saian » 30 nov. 2012, 15:48

Et respecter la casse du nom de la colonne également je suppose ?

Re: [RESOLU] Variable (prepare & execute)

par xTG » 30 nov. 2012, 15:46

Je suis content que tu ais appris à debugguer. :)
Cela n'aurait rien apporté de donner la réponse toute mâchée.

Pour compléter sur le souci, sous MySQL il est possible de créer des noms de colonne avec espace mais il faut entourer le nom de la sorte :
SELECT ... FROM `mon nom de table`

Re: [RESOLU] Variable (prepare & execute)

par Saian » 30 nov. 2012, 15:28

Tu voulais dire adieu non ? je suis gêné la :oops: :lol:

Re: Variable (prepare & execute)

par kakou34 » 30 nov. 2012, 15:20

J'ai raccourci 2-3 choses et dorénavant j'utiliser "_" et plus d'espace :)

Et c'étais effectivement cela qui poser problème.

Il me reste plus maintenant qu'a bien sécuriser mon formulaire !

En tout cas je vous remercie de votre aide et je ne vous dit pas dieu, oh que non ^^

Re: Variable (prepare & execute)

par Saian » 30 nov. 2012, 15:03

Oui tu peux nommer les colonnes ainsi : nom_de_la_colonne !
C'est très utilisé notamment pour les systèmes d'objets métier car ça permet de faire automatiquement des getter et setter du type getNomDeLaColonne et setNomDeLaColonne pour une lecture optimal du code (c'est le CamelCase), mais la je m'écarte surement un peu trop du sujet.

EDIT si la colonne s'appelle Mot de passe peut être faudrait-il respecter la casse dans la requête.

Re: Variable (prepare & execute)

par kakou34 » 30 nov. 2012, 14:46

Non sans succés :(

J'ai testé les 2 ('' et "") aucune fonctionne.

Il est possible dans une BDD d'utiliser "_" pour espacer les mots ? car coller les mots pour "mot de passe" ok mais le jour ou c'est une phrase :/

Re: Variable (prepare & execute)

par Saian » 30 nov. 2012, 14:22

Tu as donc testé de mettre des quotes autour dans la requête et ça a réglé le problème ?
Personnellement j'éviterais les espaces dans les noms des colonnes mais bon si on peut le faire, ça reste un avis personnel !

Re: Variable (prepare & execute)

par kakou34 » 30 nov. 2012, 14:17

Oui, un champ "Mot de passe" existe dans ma BDD.

Re: Variable (prepare & execute)

par juliette » 30 nov. 2012, 14:06

On est pas obligé d'entourer les noms des colonnes avec des quotes steeve.
Tu m'apprend quelque chose, autant pour moi !

Re: Variable (prepare & execute)

par Saian » 30 nov. 2012, 14:02

On est pas obligé d'entourer les noms des colonnes avec des quotes steeve.
Par contre j'ai jamais fait des noms de colonnes contenant des espaces.
J'ai un gros doute sur la possibilité de le faire et n'irait pas vérifier mais si on peut il faudrait effectivement entourer le nom de la colonne par des quotes.

Re: Variable (prepare & execute)

par juliette » 30 nov. 2012, 13:56

le soucis,ce trouve e par la: 'de passe, courriel) VALUES('abcde', '06', 'tata')', fait voire la requête complète ! mais déjà, de passe et courriel ne sont pas entourés de '

Re: Variable (prepare & execute)

par Saian » 30 nov. 2012, 13:56

Euh, je ne l'avais pas vu à la première lecture mais un champ qui s'appelle mot de passe dans la requête ? ça serait pas plutôt mot_de_passe ou autre ?

Re: Variable (prepare & execute)

par kakou34 » 30 nov. 2012, 13:49

Je supose que c'est comme ceci ? (J'ai suivis l'exemple)
<?php

		try
		{
			$base_de_donnee = new PDO('mysql:host=xxxxxxxxx;dbname=xxxxxx', 'xxxxxx', 'xxxxxx');
			$base_de_donnee->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		}
		
		catch (PDOException $e)
		{
			echo 'Impossible de ce connecter à la BDD : ' . $e->getMessage();
		} 
		
	?>
Effectivement, les erreurs sont plus détaillées mais je dois avouer que je ne comprend pas ce qu'il me dit :cry:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 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 'de passe, courriel) VALUES('abcde', '06', 'tata')' at line 1' in /xxxxxx/xxxxx/www/inscription.php:29 Stack trace: #0 /xxxxxx/xxxxxx/www/inscription.php(29): PDOStatement->execute(Array) #1 {main} thrown in /xxxxx/xxxxx/www/inscription.php on line 29
Par contre 'echo' je le met bien juste après '$requete' ?