A voir également:
- Unknown column '' in 'where clause
- Usb\unknown - Télécharger - Optimisation
- Navigation in private - Guide
- Deco in paris avis - Forum Consommation & Internet
- Aux in - Forum Casque et écouteurs
- Lyrics piste 2<unknown> - Forum Audio
9 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
4 avril 2010 à 21:17
4 avril 2010 à 21:17
En résumé:
<?php session_start (); include ("settings_sql.php"); // Connexion au serveur $mysql_link = mysql_connect($CONF['sql_host'], $CONF['sql_username'], $CONF['sql_password']); mysql_select_db($CONF['sql_database']); // Creation et envoi de la requete if(isset($_GET['username'])){ // $_GET['username']=$_GET['username']; ne veut rien dire $username=mysql_real_escape_string($_GET['username'],$mysql_link); //on securise surtout pour une valeur passée par l'URL, c a d la variable $usernane reupere la valeur passée par l'uRL en $_GET en appliquant la fonction mysql_real_escape_string //ensuite il faut utiliser cette variable sinon ça sert à rien de l'avoir assainie par la fonction si tu fais ta requette avec ... WHERE username='$_GET..... $sql = "SELECT title,url FROM Affiliation_sites WHERE username='".$username."'"; $result = mysql_query($sql, $mysql_link) or die($sql.'<br/>'.mysql_error()); $resultat = mysql_fetch_assoc($result); //la suite de l'affichage } ?>
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
1 avril 2010 à 17:01
1 avril 2010 à 17:01
<?php session_start (); include ("settings_sql.php"); // Connexion au serveur $mysql_link = mysql_connect($CONF['sql_host'], $CONF['sql_username'], $CONF['sql_password']); mysql_select_db($CONF['sql_database']); // Creation et envoi de la requete if(isset($_GET['username'])){ // $_GET['username']=$_GET['username']; ne veut rien dire $username=mysql_escape_string($_GET['username']); //on securise surtout pour une valeur passée par l'URL $sql = "SELECT title,url FROM Affiliation_sites WHERE username='".$username."'"; $result = mysql_query($sql, $mysql_link) or die($sql.'<br/>'.mysql_error()); $resultat = mysql_fetch_assoc($result); //la suite de l'affichage } ?>
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
1 avril 2010 à 17:40
1 avril 2010 à 17:40
pourquoi session ?
si on arrive comme tu dis par un lien avec l'username passé par l'url en GET ça marche
complètes ton code avec ça:
si on arrive comme tu dis par un lien avec l'username passé par l'url en GET ça marche
complètes ton code avec ça:
//// .... $resultat = mysql_fetch_assoc($result); //tes infos sont dans l'array $resultat $tilte=$resultat['title']; $url=$resultat['url']; //mais attention seuls sont disponibles ceux qui sont ecrits a droite de SELECT dans ta requette //si tu les veux tous il faut faire SELECT * FROM ....
Bonjour
Ton problème, c'est que tu avais oublié les guillemets autour du nom d'utilisateur dans ta requête
$sql = "SELECT title,url FROM Affiliation_sites WHERE username=".$_GET['username'];
Si ton nom d'utilisateur était toto par exemple, ça devanait :
SELECT title,url FROM Affiliation_sites WHERE username=toto;
pour mysql, comme toto n'a pas de guillemets, c'est un nom de colonne (comme username)
D'où le message "Unknown column 'toto'"
Il faut systématiquement mettre entre guillemets les valeurs des champs texte (pas les noms de champs !) dans les requêtes mysql.
Dans ton cas :
$sql = "SELECT title,url FROM Affiliation_sites WHERE username='".$_GET['username']."'";
qui donnera
SELECT title,url FROM Affiliation_sites WHERE username='toto'
Ton problème, c'est que tu avais oublié les guillemets autour du nom d'utilisateur dans ta requête
$sql = "SELECT title,url FROM Affiliation_sites WHERE username=".$_GET['username'];
Si ton nom d'utilisateur était toto par exemple, ça devanait :
SELECT title,url FROM Affiliation_sites WHERE username=toto;
pour mysql, comme toto n'a pas de guillemets, c'est un nom de colonne (comme username)
D'où le message "Unknown column 'toto'"
Il faut systématiquement mettre entre guillemets les valeurs des champs texte (pas les noms de champs !) dans les requêtes mysql.
Dans ton cas :
$sql = "SELECT title,url FROM Affiliation_sites WHERE username='".$_GET['username']."'";
qui donnera
SELECT title,url FROM Affiliation_sites WHERE username='toto'
Oui c'est ça Mysql considérait l'USERNAME : exemple "bidule" comme un champs qui effectivement n'existe pas dans la table... Après il semble qu'il y ai plusieurs solutions car :
username='".$username."'"; (proposé par Alain), fonctionne bien
username='".$_GET['username']."'"; marche aussi
Ce serait intéréssant de savoir par défaut quelles solutions est la mieux et pourquoi ?
En tout cas j'ai beaucoup appris aujourd'hui, car j'utilise souvent ces requêtes...
Merci :o)
username='".$username."'"; (proposé par Alain), fonctionne bien
username='".$_GET['username']."'"; marche aussi
Ce serait intéréssant de savoir par défaut quelles solutions est la mieux et pourquoi ?
En tout cas j'ai beaucoup appris aujourd'hui, car j'utilise souvent ces requêtes...
Merci :o)
Comme le dit arthezius un peu plus bas, la version où $_GET['username'] a été échappé par mysql_real_escape_string est préférable. En fait, on doit utiliser cette fonction pour insérer des données dans mysql dès qu'il y a le moindre doute sur ce qu'elles peuvent contenir. C'est à dire dans 99,9 % des cas.
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
2 avril 2010 à 04:43
2 avril 2010 à 04:43
Je l'utilise personnellement pour quasiment toutes variables que je place dans mes requêtes.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour Alain,
Merci pour la rapidité de ta réponse et le code plus clair... Je sais que dans mes codes, il y a souvent des anomalies, hi hi :o)
Bon je n'ai plus le problème de "Unknow column...", mais je ne peux avoir les autres champs correspondants à USERNAME. Par exemple si je veux le titre ($title), correspondant à l'USERNAME, cela ne s'affiche pas. C'est pour ça que j'ai pris un GET, mais peut-être que c'est plutôt SESSION ? Qu'en penses-tu ?
En fait l'idée, c'est une personne arrive avec le lien http://www.......php?username=bidule
Le code que tu m'as donné affiche bien l'USERNAME, mais si je mets :
<?php echo $title ;?>, le titre ($title), n'apparaît pas...
Si tu as une idée (voir même plusieurs, hi hi ).
En tout cas merci beaucoup de ton aide :o)
Merci pour la rapidité de ta réponse et le code plus clair... Je sais que dans mes codes, il y a souvent des anomalies, hi hi :o)
Bon je n'ai plus le problème de "Unknow column...", mais je ne peux avoir les autres champs correspondants à USERNAME. Par exemple si je veux le titre ($title), correspondant à l'USERNAME, cela ne s'affiche pas. C'est pour ça que j'ai pris un GET, mais peut-être que c'est plutôt SESSION ? Qu'en penses-tu ?
En fait l'idée, c'est une personne arrive avec le lien http://www.......php?username=bidule
Le code que tu m'as donné affiche bien l'USERNAME, mais si je mets :
<?php echo $title ;?>, le titre ($title), n'apparaît pas...
Si tu as une idée (voir même plusieurs, hi hi ).
En tout cas merci beaucoup de ton aide :o)
Yeah !!!!
Dans mon code ça marche avec <?php echo $tilte=$resultat['title'] ;?>
J'avais trouvé : <?php echo 'L\'Annuaire professionnel de ' .$resultat['title']; ?>, mais impossible de retirer 'L\Annuaire professionnel de ' qui me renvoyait une erreur, que je n'arrivais pas à résoudre...
Voilà, donc ton code est parfait et tout marche comme je voulais.
Je te remercie chaleureusement Alain :o). C'est vraiment cool !!!!
Dans mon code ça marche avec <?php echo $tilte=$resultat['title'] ;?>
J'avais trouvé : <?php echo 'L\'Annuaire professionnel de ' .$resultat['title']; ?>, mais impossible de retirer 'L\Annuaire professionnel de ' qui me renvoyait une erreur, que je n'arrivais pas à résoudre...
Voilà, donc ton code est parfait et tout marche comme je voulais.
Je te remercie chaleureusement Alain :o). C'est vraiment cool !!!!
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
1 avril 2010 à 18:46
1 avril 2010 à 18:46
username='".$username."'";
est mieux car $username passe $_GET['username'] a travers la fonction mysql_escape_string
qui va protéger tous les caractères de la chaîne
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
1 avril 2010 à 20:39
1 avril 2010 à 20:39
Mieux: mysql_real_escape_string()
https://www.php.net/manual/fr/function.mysql-real-escape-string.php
Sur la page de mysql_escape_string():
https://www.php.net/manual/fr/function.mysql-real-escape-string.php
Sur la page de mysql_escape_string():
Cette fonction est OBSOLETE depuis PHP 5.3.0. Nous vous encourageons vivement à ne plus l'utiliser.