Problème de guillemets à l'intérieur d'une function....

Petit nouveau ! | 3 Messages

09 août 2011, 11:38

Bonjour,
je galère depuis plusieurs jours en essayant de créer une fonction intégrant une requête SQL
pour que cette requête fonctionne bien je dois mettre des '$pn' sur la valeur '$pn' qui est une valeur numérique.
$result=mysql_query("SELECT * FROM $table WHERE ID_Cde='$pn' ")

Le hic c'est que quand je veux créer ma fonction je créé une chaine, laquelle doit être entourée de ' '
Évidement ça ne marche plus 4 Guillements dans une chaine c'est 2 de trop..


$code_recupere_sc= '$table=$table_table[substr($pn,0,1)];
if ($result=mysql_query("SELECT * FROM $table WHERE ID_Cde='$pn' ")) {
while ($row=mysql_fetch_array($result)){ $sc=bin2hex(mhash(MHASH_SHA1,$row[Date]));}
} else { echo $query; }
return $sc;';
$recupere_sc=create_function($pn,$code_recupere_sc);

si quelqu'un avait la solution à ce problême ce serait super...

Franky

Eléphant du PHP | 275 Messages

09 août 2011, 11:56

Pour mettre un ' dans une chaine, faut l'échapper, avec un \

Ceci dit, les fonctions anonymes sont plus simple à déclarer en php 5.3.

Enfin, assure toi bien qu'il ne puisse pas avoir de ' dans $pn...

Eléphant du PHP | 73 Messages

09 août 2011, 12:08

'.$pn.' ?

Mammouth du PHP | 2278 Messages

09 août 2011, 14:35

il ne faut pas de quotes autour des valeurs numériques dans les requêtes/
Si par hasard ta fonction fonctionnait, mysql rejetterait la requête...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 275 Messages

09 août 2011, 16:34

il ne faut pas de quotes autour des valeurs numériques dans les requêtes/
Si par hasard ta fonction fonctionnait, mysql rejetterait la requête...
Non non, mysql caste sans soucis.

Eléphant du PHP | 171 Messages

09 août 2011, 18:20

$recupere_sc=create_function($pn,$code_recupere_sc);
Mmhh ce qu'il faut surtout, c'est lire la documentation avec attention :wink:
string create_function ( string $args , string $code )
Le bon jugement s'apprend par l'expérience qui s'acquiert en partie par le mauvais jugement.

Petit nouveau ! | 3 Messages

10 août 2011, 10:13

Merci à tous !

En fait mon pb est un peu plus compliqué que ça, je veux mettre une requête sql dans une fonction:

$result=mysql_query("SELECT * FROM $table WHERE ID_Cde='$pn' ")

Cette requête contient des ' ' sur la valeur $pn c'est de là que vient le pb !
=> Peut être est-ce là le fond du pb, $pn est une valeur numérique mon champ est un integer mais sans les ' ' ma requête ne fonctionne pas.

Eléphant du PHP | 171 Messages

10 août 2011, 11:13

As tu bien entouré de guillemets $pn quand tu lances ta fonction comme ceci en fait :

$recupere_sc=create_function('$pn',$code_recupere_sc);
Le bon jugement s'apprend par l'expérience qui s'acquiert en partie par le mauvais jugement.

Petit nouveau ! | 3 Messages

11 août 2011, 00:28

Merci encore !
Eh bien oui mais avant ça, dans la chaine qui sera le code de la fonction je ne peux pas mettre des '' en voici un extrait:
$code_recupere_sc='if ($resultx=mysql_query("SELECT * FROM $table WHERE ID_Cde='$pn'")) {...........} return $sc; ';

$recupere_sc=create_function('$pn',$code_recupere_sc);

Il faudrait peut être travailler sur la requête sql pour pouvoir supprimer ces damnés ''..;o)