Syntaxe PHP ? HereDoc et pgsql

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 : Syntaxe PHP ? HereDoc et pgsql

Re: Syntaxe PHP ? HereDoc et pgsql

par denzel3 » 29 janv. 2010, 14:02

OH PUTIN!

débuggué.

Je suis un boulet ^^ Je ne vous apprend pas qu'il y a une différence entre un WHERE X AND Y et un WHERE (X AND Y)
hein ;)

Re: Syntaxe PHP ? HereDoc et pgsql

par denzel3 » 29 janv. 2010, 13:21

Aye je n'arrive toujours pas à débugguer ce script, j'ai essayé en utilisant la concaténation (sans HereDoc) mais ca ne passe toujours pas.
J'ai passé à un problême d'accent (en admettant que qd je teste directement sur la BD, il passe "Réseaux" en utf9, et que c'est pour ca que ca fonctionne) car ma bd est en UTF9 mais en utilisant Informatique (pas d'accent, ouioui) au lieu de Réseaux ca ne fonctionne pas non plus... Merci de vos lumières si ca vous parle ;) J'espère!! :)

Re: Syntaxe PHP ? HereDoc et pgsql

par denzel3 » 29 janv. 2010, 02:13

Eh ben voila je suis en plein dedans, je bloque sur un truc vraiment fou. Ce code fonctionne sous sql et pas moyen de marcher dans php :/
echo $_SESSION['mat_select'];

$req_liste_ssmat = <<<EOT
    SELECT libellesousmatiere FROM SousMatieres AS s, Matieres AS m
	WHERE s.nummatiere = m.nummatiere
	AND m.libellematiere = ('${_SESSION['mat_select']}')
EOT;

$resultat = pg_query($dbconn, $req_liste_ssmat) or die ($chaine = "Erreur");
Donc voila je fais un echo de $_SESSION['mat_select'], j'obtiens "Réseaux" par exemple. J'éxécute la commande avec Réseaux directement sur sql, ca fonctionne, et dans php j'obtiens une erreur. J'ai essayé de remplacer ma variable de session par une simple, ca ne change rien, et cette syntaxe je l'ai déja utilisé sur d'autres commandes qui fonctionnent... Merci de votre aide.

Re: Syntaxe PHP ? HereDoc et pgsql

par denzel3 » 20 janv. 2010, 22:20

Je vous remercie à tous, le débugging est prévu pour ce week end, alors "I'll be back!" vous faire un compte rendu.

Vos remarques vont me permettre d'utiliser les bonnes méthodes de débugging, voire directement les bonnes syntaxes :)

Re: Syntaxe PHP ? HereDoc et pgsql

par stealth35 » 19 janv. 2010, 21:24

attention avec le heredoc, y'a pas d'espace apres les <<< et verifie bien que il n'y est pas d'espace ni de tab a la fin
//pas bien
$test = <<< EOT
         coucou
      EOT
//bien
$test = <<<EOT
         coucou
EOT

Re: Syntaxe PHP ? HereDoc et pgsql

par seebz » 17 janv. 2010, 23:22

Essaye en mettant les noms de variables entre crochets {}

Personnellement, j'utilise de temps en temps la cette syntaxe et je n'ai jamais rencontré de problème (même avec des tableaux)

Re: Syntaxe PHP ? HereDoc et pgsql

par zeus » 17 janv. 2010, 22:00

Comme à chaque fois que l'on essaye de debugger du SQL, il faut essayer de ne pas mélanger PHP et SQL.
Donc, dans un 1er temps, essaye ta requête sans les variables PHP, et si elle marche, remet les variables PHP.
Après, si ça ne marche toujours pas, affiche la requête SQL générée (avec un echo) et essaye de l'exécuter depuis un client SQL.

Et, dans tout les cas, le message d'erreur contient 90% de la réponse. Il faut donc le lire, le comprendre, ou alors rechercher sur le net à quoi correspond l'erreur.

Pour ton cas, je suis pret à parier que les variables PHP ne sont pas exécutée dans le cas de la syntaxe Heredoc.

Syntaxe PHP ? HereDoc et pgsql

par denzel3 » 17 janv. 2010, 21:36

Bonjour à tous

Je sais qu'en pgsql une requête est de la forme :
INSERT INTO Utilisateurs (NomUtil, Password) VALUES ('x'),('y')

En ajoutant un HereDoc pour simplifier ma syntaxe php (pour l'écrire sans utiliser un . à la moins variable), j'obtiens ceci :

$req_ajout = <<< EOT
INSERT INTO Utilisateurs (NomUtil, Password) VALUES ('$temp1'),('$temp2')
EOT;

Et ce code ne fonctionne pourtant pas, j'espère que vous pourrez m'aider à le corriger.
p.s : Est il aussi possible d'utiliser un $_SESSION['temp'] à la place de mon $temp1 par exemple?

Merci d'avance de votre aide