Insertion de données avec mysql

maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007 - 20 nov. 2005 à 17:29
maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007 - 22 nov. 2005 à 11:49
Salut, alors voila pour un prog j'ai besoin d'enregistere des info dans un BDD mysql

Etant débutant je V prendre un tuto sur un site d'abord je le suis a la
lettre et tout marche bien... Ensuite je change deux trois truc pour
intégrer des données end ur (pas des variable) dans un autre base et
une autre table du meme serveur (en local) et la Ca me fait un erreur
alors je teste plein de truc toujour une erreur ensuite j'ajoute un
champs dans la table qui a étéait créer pendant le tuto (la ou tout
marcher bien) dans je reprendre exactement le meme code que celui du
tuto en rajoutant juste ca :



avant :



mysql_query(mysql, pChar('INSERT INTO '+table+' (id,nom) VALUES ("", "Nom")'))



(ca ca marche)

--------------------

Avec les modif





mysql_query(mysql, pChar('INSERT INTO '+table+' (id,nom,clan) VALUES ("", "Nom", "kor")'))



Voila pas bcp de modif mais quand meme ca marche pas ....



voila touie les partie du code :



Déclaration :



implementation

CONST dbname='testdb';

table='db';





{$R *.dfm}



-------------------------------



public

{ Déclarations publiques }

mysql: PMysql;



end;



Et mysql déclarer dans les USES



le code pour me connecté :



procedure TForm1.Button3Click(Sender: TObject);

Var user,host,pwd:string;

portip:integer;

begin

user:='root';

pwd:='';

host:='127.0.0.1';

portip:=3306;

MySQL := mysql_init(nil);

mysql_options(mysql,MYSQL_OPT_COMPRESS,0);

if mysql_real_connect(mysql, pChar(host), pChar(user), pChar(pwd), nil, portip, nil, 0)=nil then

Button3.Caption:='La connexion a echouée'

else

Button3.Caption:='Connexion OK';

end;





----------------------------------------------



L'insértion de donnés :



procedure TForm1.Button6Click(Sender: TObject);

Var boucle:byte;

erreur:boolean;

begin

if mysql_select_db(mysql, pChar(dbname)) <> 0 then

Button6.Caption:='Selection de la base impossible';

erreur:=false;

if mysql_query(mysql, pChar('INSERT INTO '+table+' (id,nom,clan) VALUES ("", "Nom", "kor")')) <> 0 then

erreur:=true;

if (erreur) then

Button6.Caption:='Erreur'

else

Button6.Caption:='Ok';

end;





Voila moi j'i capte vraiment rien pourquoi ca fonctione pas et ca mme rend fou !!!



Donc si vous y voyé mieu que moi :s ben je vous en remercis d'avance ...



A oui j'ai aussi la LibMySql.dll et mysql.pas (sinon la fonction du tuto ne marcherait pas :D )



Aller cordialement.

6 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
20 nov. 2005 à 20:51
en effet, y'a un probleme...



la syntaxe de la requette semble bonne ...





verification toute fois : le champ "clan" existe t'il dans la table ?



si non ... ben alors ? faudrait peut etre le créer non ?



si oui ... de quel type est il ? Text ? Varchar ?



si varchar ... comment est il declaré ? varchar(3) ? varchar(10) ?



autre verification importante :

MySQL est CaseSensitive pour les nom des champs : clan n'est pas egal a Clan ou CLAN

verifie donc que "clan" est declaré exactement comme cela sans majuscule aucunes.
0
maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007
20 nov. 2005 à 23:38
Alors :



oui clan existe je suis débutant delphi mais ca fait un petit moment que je code en php ..;



Et il est écrit exactement pareil c'est un varchar(25) comme le champs
'nom' juste au desus qui dans la requete qui fonctionne marche trés
bien ...



Jvous dit c'est a n'y rien comprendre ....
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
21 nov. 2005 à 04:53
carrement en effet ...



je supose que le champ Id est un Int en auto-increment definis en Clef primaire ?



par contre un truc me trouble dans la declaration de ta requettes :

mysql_query(mysql, pChar('INSERT INTO '+table+' (id,nom,clan) VALUES ("", "Nom", "kor")'))

c'est mysql_query qui demande un pChar (pointeur sur Caractere)?



un autre truc me chifonne, c'est l'utilisation de " au lieu de ' ('' en delphi (double touche 4)) ...

car si tu utilise mysql avec php tu as du remarquer que les guillemets ne sont pas supportée dans la requette mysql...



est-ce que la requette fonctionne si tu l'execute dans la fenetre SQL de phpmyadmin ?



aussi tu peu utiliser format pour créer ta requette, ça eviteras de tout retaper a chaque fois :




function InsertQuery(table, nom, clan : string) : string;

begin

result := format( 'INSERT INTO %s (id, nom, clan) VALUES ('''',''%s'',''%s'')',


[Table,Nom,Clan]);

end;
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
21 nov. 2005 à 04:58
par contre tu as de la chance car je n'ai jamais reussi a faire fonctionner MySQL.Pas avec la lib et mysql ...



me demande pas pourquoi ... echec de connection en permanence...
remarque a l'epoque j'avais essayer avec un easyphp ... maintenant j'ai
une vrai install Apache/Php/MySQL faite a la main donc ça devrait
surrement fonctionner.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007
21 nov. 2005 à 09:53
Ben enfete ma requétes et parfaite puisque si je ne met pas le 3eme élement ca marche nikel .....
0
maxoudu328 Messages postés 52 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 17 mai 2007
22 nov. 2005 à 11:49
Un pti up pour ce probleme super bizard !!!
0
Rejoignez-nous