Insert dans base de free

Signaler
Messages postés
61
Date d'inscription
dimanche 11 novembre 2007
Statut
Membre
Dernière intervention
18 septembre 2010
-
tetesky
Messages postés
9
Date d'inscription
mardi 18 mai 2010
Statut
Membre
Dernière intervention
6 novembre 2010
-
Bonjour,
J'essaye de faire un insert dans une base de free.



INSERT INTO `mabase`.`presse` (`id`, `titre`, `couverture`, `page`, `numero`, `date`, `lien`, `lien_article`) VALUES (NULL, '$titre1', '1', '0', '$numero', '$madate', '$chem', '')



Quand j'exécute cette commande avec des variables correct, directement sur la page d'admin sql de free cela fonctionne.



Quand j'exécute cette même commande avec les même variable depuis une page d'admin de mes page perso, voici l'erreur:


INSERT command denied to user 'mon.compte'@'172.20.245.16' for table 'matable'.


Cela signifie t il que free n'autorise pas la commande insert ?


Si oui existe t il un autre moyen?








Benoît
@+

11 réponses

Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
25
Salut,

Personellement j'utilise free et je n'ai pas de problème avec la commande INSERT...

essai de faire comme ça :

mysql_connect('host','user','pass');
mysql_select_db('base de donnée');

mysql_query('INSERT INTO `presse` (`id`, `titre`, `couverture`, `page`, `numero`, `date`, `lien`, `lien_article`) VALUES (NULL, '$titre1', '1', '0', '$numero', '$madate', '$chem', '')');

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
61
Date d'inscription
dimanche 11 novembre 2007
Statut
Membre
Dernière intervention
18 septembre 2010

Re,




J'ai deja:



    //connection au serveur:
$cnx = mysql_connect( "sql.free.fr", "login", "pass" ) ;
 
    //sélection de la base de données:
  $db = mysql_select_db( "ma_base" ) ;

Benoît
@+
Messages postés
68
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
7 juillet 2008
3
Je ne sais pas si l'endroit est bien choisi pour demander de l'aide quant aux services de Free. Ceci dit, puisque je suis client chez eux, je vais m'y intéresser un peu. Sinon, il est fort improbable que Free ait restreint totalement l'accès aux bases de données des utilisateurs, cela redrait leurs services d'hébergement assez inutiles, et de toute manière ça se saurait.

Avant d'aller voir chez Free, je vais te demander un préalable. Parfois, pour des raisons de sécurité ou autres, les hébergeurs désactivent ou restraignent l'accès aux bases de données à distance. Dans ta fonction mysql_connect, as-tu essayé de te connecter au serveur MySQL via l'adresse 'localhost' ? Sinon, essaye, il est possible que tu ne puisses pas administrer cette base de données depuis une autre adresse.

Si cela ne t'aide toujours pas, vérifie que ton compte d'hébergement chez Free est bien configuré, je ne me souviens pas qu'il faille faire quelque chose de particulier pour pouvoir accéder à leurs services, mais on ne sait jamais. As-tu accès à ta base de données en lecture (instruction SELECT) ?

Sinon, dans un autre registre, j'aimerais commenter ta requête d'insertion :
    - les apostrophes inversées sont facultatives pours les noms de tables et de champs dont le nom ne contient que des caractères alphanumériques [a-zA-Z0-9_], donc ne te sens pas obligé de les mettre
    - si le champ 'id' est en mode AUTO_INCREMENT, tu peux le retirer de toutes tes requêtes d'insertion, MySQL s'en charge à ta place
    - pour les champs 'couverture', 'page' et 'numero', ces derniers ne sont-ils pas destinés à ne contenir que des entiers, ou éventuellement la valeur NULL ? dans ce cas, il faut leur donner le type xINT (x : TINY, SMALL, HUGE...) et retirer les apostrophes des valeurs que tu souhaites y insérer
    - je rappelle que toutes les valeurs de type chaine de caractères doivent être préparées via la fonction mysql_real_escape_string avant de les insérer dans une requête MySQL s'il n'est pas absolument certain qu'elles ne contiendront jamais de caractères qui pourraient poser problème à l'analyseur syntaxique de MySQL, comme des guillemets, apostrophes ou des caractères plus spéciaux dont je ne connais pas moi-même la liste exhaustive
Messages postés
61
Date d'inscription
dimanche 11 novembre 2007
Statut
Membre
Dernière intervention
18 septembre 2010

Re,



Cela ne fonctionne pas avec localhost ;




Mon compte d'hébergement chez Free est bien configuré;



J'ai bien acces a ma base via un select ;



Et j'ai des pages qui utilise un update et cela fonctionne.



Bizarre, il y a quelque chose que je fait mal.



Sinon merci pour les infos complémentaires.



Benoît
@+
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
25
Re,

tu as essayé de retiré le nom de ta base dans ta requête ?

ça ne sert a rien vu que tu as déja définie quelle base tu utilise avec la fonction mysql_select_db();

a++

Si la réponse vous convient, pensez : Réponse acceptée !
Messages postés
61
Date d'inscription
dimanche 11 novembre 2007
Statut
Membre
Dernière intervention
18 septembre 2010

Re,

C'est pareil

Benoît
@+
Messages postés
68
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
7 juillet 2008
3
Bon, là ça devient plus obscur. Je n'ai pas le temps de créer un site de test chez Free pour tester ça maintenant, je le ferai plus tard.

Sinon, même si ça a peu de chances d'être lié à ça, est-ce que tu peux ?
    - préciser à mysql_select_db et mysql_query l'identifiant de la connection que tu as ouvertes avec mysql_connect
    - retirer la base de ta requête (INSERT INTO presse ...)

    - dégrossir ta requête en retirant les champs 'id' et 'lien_article' à priori inutiles s'ils sont bien comme je le pense respectivement en AUTO_INCREMENT, et DEFAULT '' (chaîne vide)
    - vérifier que tu n'as pas tenté d'insérer une chaîne dans un champ de type entier en mettant des apostrophes par erreur
    - vérifier sur la console d'administration de ton compte MySQL que ton compte a bien les bons privilèges et que l'accès à l'instruction INSERT n'a pas été accidentellement retirée
    - vérifier sur la même console ta requête en tentant de l'exécuter manuellement
Messages postés
61
Date d'inscription
dimanche 11 novembre 2007
Statut
Membre
Dernière intervention
18 septembre 2010

Re ,
Oki je regarde de ce cote mais ce soir Stop j'ai la tete comme un compteur a gaz

Merci

Benoît
@+
Messages postés
9
Date d'inscription
mardi 18 mai 2010
Statut
Membre
Dernière intervention
6 novembre 2010
1
Moi j'ai le meme prob : lorsque je met
mysql_query("SELECT * FROM ....");

sa marche parfaitement mais lorsque j'utilise
mysql_query("INSERT INTO ...");

il me dit A MOI L'ADMINISTRATEUR que j'ai pas l'accé et il faut que je me fasse une raison alors que j'ai jamais eu se probleme avant !!!!


programmer, programmer, programmer, mais ya pas que ca !!!
Messages postés
9
Date d'inscription
mardi 18 mai 2010
Statut
Membre
Dernière intervention
6 novembre 2010
1
- suite ..
le pire c'est qu'il y a des tables ou sa marche et d'autre ou sa marche pas comme si free s'amuser avec les données

programmer, programmer, programmer, mais ya pas que ca !!!
Messages postés
9
Date d'inscription
mardi 18 mai 2010
Statut
Membre
Dernière intervention
6 novembre 2010
1
- suite ..
c'est bon j'ai trouvé
en faite je faisais des teste en localhost et j'avais oublier d'enlever le vieux nom de ma table dans les requetes
ex localhost
mysql_query("SELECT * FROM base.table")
et la j'ai remis les meme alors que la table n'avais plus le meme nom
ysql_query("SELECT * FROM base_nv.table")


programmer, programmer, programmer, mais ya pas que ca !!!