Bonjour,
J’ai un problème sur mon code php, je vous montre et me m’explique
require_once(‘connectionreva.php’);
$iad=$_POST[‘idmodif’];
$anreva = mysql_connect($hostname_anreva, $username_anreva,$password_anreva) or die(mysql_error()); @mysql_select_db($database_anreva,$anreva) or die(“Impossible de se connecter à la base anreva”);
$sqlmodif=" SELECT * FROM agent_reva WHERE aid=’$iad’ "
$result=mysql_query($sqlmodif,$anreva) or die(“erreur programmation sql”);
la requête ne me retourne rien du tout alors que $iad donne forcément un identifiant de la table agent_reva;
Pour tester j’ai donc fait un echo $sqlmodif et $iad cela me donne ça :
SELECT * FROM agent_reva WHERE aid='DN2
DN2
le problème c’est l’apostrophe qui apparait avant DN2 dans l’affichage de $sqlmodif, alors qu’il n’apparait pas quand je fais un affichage de $iad seul.
L’apostrophe dans $sqlmodif, entre “aid=” et “DN2” est normal : tu l’as mis dans ton code :
$sqlmodif=" SELECT * FROM agent_reva WHERE aid='$iad' "
(et d’ailleurs il le faut cet apostrophe dans ta requête SQL)
Ce qui est anormal c’est que $sqlmodif ne contienne pas un second apostrophe, à la fin de la chaîne :etonne2:
Ouaip, mais j’ai toujours trouvé bancale l’interprétation des variables au sein des chaines en double-quote. J’préfère toujours assurer en sortant de la chaîne, et comme dit Sans-Nom, ça permet aussi de rajouter une fonction anti injection (ou autre).
Sauf que dans 99% des cas on utilise des entiers, ensuite si tu n’es pas content, fait appel à mysql_real_escape_string & consorts, puisque le résultat sera le même…
déjà je te conseille de débugger avec var_dump() et non echo() car le résultat de echo() est interpretté comme du html et ça peut fausser l’affichage
sinon quand tu dits que ça ne retourne rien, tu veux dire quoi exactement? ton $result est une ressource ou bien “FALSE”? (car je pense que tu le sais, mais mysql_query() ne renvoie pas une liste de résultats mais une ressource mysql hein!)
et en testant la même requête dans phpmyadmin ça donne quoi?