coti963

Problème enregistrement MySQL

18 messages dans ce sujet

Bonsoir, lorsque je me connecte, il me demande de rentrer mon mot de passe pour m'enregistrer mais ensuite rien ne se passe et du coup je ne peux pas spawn, screens : 

Ici il me demande de mettre mon mot de passe pour m'enregistrer :

sa-mp-059.png.e5bcb35647fe92f0042a8018d8f0f507.png

 

Quand j'appuie sur Register je devrais avoir un message disant que je me suis bien connecté mais il ne s'affche pas du coup je ne peux pas jouer :

sa-mp-060.png.fc11d23c215ffae2073dbccc1e2efb2e.png

Le code : 

#include <a_samp>
#include <a_mysql>
#include <foreach>

main()
{
	print("\n----------------------------------");
	print(" Serveur open");
	print("----------------------------------\n");
}
#define MYSQL_HOST "localhost"
#define MYSQL_COMPTE "root"
#define MYSQL_MDP ""
#define MYSQL_BDD "serveur_samp"

#define DIALOG_REGISTER        (0)
#define DIALOG_LOGIN           (1)


new MySQL: Database, Corrupt_Check[MAX_PLAYERS];

//==============================================================================

enum ENUM_PLAYER_DATA
{
	ID,
	Name[25],

	Password[65],
	Salt[11],

	PasswordFails,

	Score,
	Argent,
    Admin,
	Duty,
	Vip,
	Skin,
	Kills,
	Morts,
	InTDM,
	Tete,
	GPS,
	Briquet,
	Cigarette,
	BoiteOutils,
	Glaciere,
	Drogue,
	Warn,
	ArgentBanque,
	
	Cache: Player_Cache,
	bool:LoggedIn
}

new pInfo[MAX_PLAYERS][ENUM_PLAYER_DATA];

//==============================================================================

public OnGameModeInit()
{
	new MySQLOpt: option_id = mysql_init_options();
	mysql_set_option(option_id, AUTO_RECONNECT, true);

	Database = mysql_connect(MYSQL_HOST, MYSQL_COMPTE, MYSQL_MDP, MYSQL_BDD, option_id); 
	
	if(Database == MYSQL_INVALID_HANDLE || mysql_errno(Database) != 0) 
	{
		print("La base de donné n'a pas réussi à se connecter, le serveur s'éteint.");

		SendRconCommand("exit");
		return 1;
	}

	print("La base de donné MySQL est bien connecté.");

	mysql_tquery(Database, "CREATE TABLE IF NOT EXISTS `PLAYERS` (`ID` int(11) NOT NULL AUTO_INCREMENT,`USERNAME` varchar(24) NOT NULL,`PASSWORD` char(65) NOT NULL,`SALT` char(11) NOT NULL,`SCORE` mediumint(7), `ARGENTBANQUE` mediumint(7), `WARN` mediumint(7), `DROGUE` mediumint(7), `GLACIERE` mediumint(7), `BOITEOUTILS` mediumint(7), `CIGARETTE` mediumint(7), `BRIQUET` mediumint(7), `GPS` mediumint(7), `TETE` mediumint(7), `INTDM` mediumint(7), `SKIN` mediumint(7), `VIP` mediumint(2), `DUTY` mediumint(2), `ADMIN` mediumint(7), `KILLS` mediumint(7), `ARGENT` mediumint(7) NOT NULL DEFAULT '0',`MORTS` mediumint(7) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`), UNIQUE KEY `USERNAME` (`USERNAME`))");
	return 1;
}

public OnGameModeExit()
{
	foreach(new i: Player)
    {
		if(IsPlayerConnected(i))
		{
			OnPlayerDisconnect(i, 1);
		}
	}

	mysql_close(Database);
	return 1;
}

public OnPlayerConnect(playerid)
{
	new DB_Query[512];

	pInfo[playerid][Kills] = 0;
	pInfo[playerid][Morts] = 0;
	pInfo[playerid][PasswordFails] = 0;

	GetPlayerName(playerid, pInfo[playerid][Name], MAX_PLAYER_NAME); // Getting the player's name.
	Corrupt_Check[playerid]++;

	mysql_format(Database, DB_Query, sizeof(DB_Query), "SELECT * FROM `PLAYERS` WHERE `USERNAME` = '%e' LIMIT 1", pInfo[playerid][Name]);
	mysql_tquery(Database, DB_Query, "OnPlayerDataCheck", "ii", playerid, Corrupt_Check[playerid]);
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	Corrupt_Check[playerid]++;

	new DB_Query[256];
	mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `PLAYERS` SET `SCORE` = %d, `ARGENT` = %d, `KILLS` = %d, `MORTS` = %d, `ADMIN` = %d, `DUTY` = %d, `VIP` = %d, `SKIN` = %d, `INTDM` = %d, `TETE` = %d, `GPS` = %d, `BRIQUET` = %d, `CIGARETTE` = %d, `BOITEOUTILS` = %d, `GLACIERE` = %d, `DROGUE` = %d, `WARN` = %d, `ARGENTBANQUE` = %d WHERE `ID` = %d LIMIT 1",
	pInfo[playerid][Score], pInfo[playerid][Argent], pInfo[playerid][Kills], pInfo[playerid][Morts], pInfo[playerid][Admin], pInfo[playerid][Duty], pInfo[playerid][Vip], pInfo[playerid][Skin], pInfo[playerid][InTDM], pInfo[playerid][Tete], pInfo[playerid][GPS], pInfo[playerid][Briquet], pInfo[playerid][Cigarette], pInfo[playerid][BoiteOutils], pInfo[playerid][Glaciere], pInfo[playerid][Drogue], pInfo[playerid][Warn], pInfo[playerid][ArgentBanque], pInfo[playerid][ID]);

	mysql_tquery(Database, DB_Query);

	if(cache_is_valid(pInfo[playerid][Player_Cache]))
	{
		cache_delete(pInfo[playerid][Player_Cache]);
		pInfo[playerid][Player_Cache] = MYSQL_INVALID_CACHE;
	}

	pInfo[playerid][LoggedIn] = false;
	print("OnPlayerDisconnect a été appelé.");
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	if(killerid != INVALID_PLAYER_ID)
	{
	    pInfo[killerid][Kills]++;
	    pInfo[playerid][Morts]++;
	}
	return 1;
}

public OnPlayerRequestSpawn(playerid)
{
	if(pInfo[playerid][LoggedIn] == false) return 0; 
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch (dialogid)
	{
		case DIALOG_LOGIN:
		{
			if(!response) return Kick(playerid);

			new Salted_Key[65];
			SHA256_PassHash(inputtext, pInfo[playerid][Salt], Salted_Key, 65);

			if(strcmp(Salted_Key, pInfo[playerid][Password]) == 0)
			{

				cache_set_active(pInfo[playerid][Player_Cache]);

            	cache_get_value_int(0, "ID", pInfo[playerid][ID]);

        		cache_get_value_int(0, "KILLS", pInfo[playerid][Kills]);
        		cache_get_value_int(0, "MORTS", pInfo[playerid][Morts]);

        		cache_get_value_int(0, "SCORE", pInfo[playerid][Score]);
        		cache_get_value_int(0, "ARGENT", pInfo[playerid][Argent]);
                cache_get_value_int(0, "ADMIN", pInfo[playerid][Admin]);
                cache_get_value_int(0, "DUTY", pInfo[playerid][Duty]);
                cache_get_value_int(0, "VIP", pInfo[playerid][Vip]);
                cache_get_value_int(0, "SKIN", pInfo[playerid][Skin]);
                cache_get_value_int(0, "INTDM", pInfo[playerid][InTDM]);
                cache_get_value_int(0, "TETE", pInfo[playerid][Tete]);
                cache_get_value_int(0, "GPS", pInfo[playerid][GPS]);
                cache_get_value_int(0, "BRIQUET", pInfo[playerid][Briquet]);
                cache_get_value_int(0, "CIGARETTE", pInfo[playerid][Cigarette]);
                cache_get_value_int(0, "BOITEOUTILS", pInfo[playerid][BoiteOutils]);
                cache_get_value_int(0, "GLACIERE", pInfo[playerid][Glaciere]);
                cache_get_value_int(0, "DROGUE", pInfo[playerid][Drogue]);
                cache_get_value_int(0, "WARN", pInfo[playerid][Warn]);
                cache_get_value_int(0, "ARGENTBANQUE", pInfo[playerid][ArgentBanque]);

        		SetPlayerScore(playerid, pInfo[playerid][Score]);

        		ResetPlayerMoney(playerid);
        		GivePlayerMoney(playerid, pInfo[playerid][Argent]);

				cache_delete(pInfo[playerid][Player_Cache]);
				pInfo[playerid][Player_Cache] = MYSQL_INVALID_CACHE;

				pInfo[playerid][LoggedIn] = true;
				SendClientMessage(playerid, 0x00FF00FF, "Vous etes bien connecté.");
			}
			else
			{
			    new String[150];

				pInfo[playerid][PasswordFails] += 1;
				printf("%s n'a pas réussi à se connecter. (%d)", pInfo[playerid][Name], pInfo[playerid][PasswordFails]);

				if (pInfo[playerid][PasswordFails] >= 3) 
				{
					format(String, sizeof(String), "%s a été kick Raison: {FF0000}(%d/3) Mauvais mot de passe.", pInfo[playerid][Name], pInfo[playerid][PasswordFails]);
					SendClientMessageToAll(0x969696FF, String);
					Kick(playerid);
				}
				else
				{
					format(String, sizeof(String), "Mot de passe incorrect, vous avez %d sur 3 essais.", pInfo[playerid][PasswordFails]);
					SendClientMessage(playerid, 0xFF0000FF, String);

              		format(String, sizeof(String), "{FFFFFF}Bienvenue %s.\n\n{0099FF}Ce compte est déjà enregistré.\n\
            		{0099FF}Veuillez entrer votre mot de passe ci-dessous pour continuer.\n\n", pInfo[playerid][Name]);
            		ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login System", String, "Login", "Leave");
				}
			}
		}
		case DIALOG_REGISTER:
		{
			if(!response) return Kick(playerid);

			if(strlen(inputtext) <= 5 || strlen(inputtext) > 60)
			{
		    	SendClientMessage(playerid, 0x969696FF, "Mot de passe trop court, il doit faire 5 caractères minimum.");

				new String[150];

    	    	format(String, sizeof(String), "{FFFFFF}Bienvenue %s.\n\n{0099FF}Vous n'etes pas enregistré.\n\
    	     	{0099FF}Veuillez entrer votre mot de passe ci-dessous pour continuer.\n\n", pInfo[playerid][Name]);
	        	ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration System", String, "Register", "Leave");
			}
			else
			{
                for (new i = 0; i < 10; i++)
                {
                    pInfo[playerid][Salt][i] = random(79) + 47;
	    		}

	    		pInfo[playerid][Salt][10] = 0;
		    	SHA256_PassHash(inputtext, pInfo[playerid][Salt], pInfo[playerid][Password], 65);

		    	new DB_Query[225];

		    	mysql_format(Database, DB_Query, sizeof(DB_Query), "INSERT INTO `PLAYERS` (`USERNAME`, `PASSWORD`, `SALT`, `SCORE`, `KILLS`, `ARGENT`, `MORTS`, `ADMIN`, `DUTY`, `VIP`, `SKIN`, `INTDM`, `TETE`, `GPS`, `BRIQUET`, `CIGARETTE`, `BOITEOUTILS`, `GLACIERE`, `DROGUE`, `WARN`, `ARGENTBANQUE`)\
		    	VALUES ('%e', '%s', '%e', '20', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1000')", pInfo[playerid][Name], pInfo[playerid][Password], pInfo[playerid][Salt]);
		     	mysql_tquery(Database, DB_Query, "OnPlayerRegister", "d", playerid);
		     }
		}
	}
	return 1;
}
forward public OnPlayerDataCheck(playerid, corrupt_check);
public OnPlayerDataCheck(playerid, corrupt_check)
{
	if (corrupt_check != Corrupt_Check[playerid]) return Kick(playerid);

	new String[150];

	if(cache_num_rows() > 0)
	{
		cache_get_value(0, "PASSWORD", pInfo[playerid][Password], 65);
		cache_get_value(0, "SALT", pInfo[playerid][Salt], 11);

		pInfo[playerid][Player_Cache] = cache_save();

		format(String, sizeof(String), "{FFFFFF}Bienvenue %s.\n\n{0099FF}Ce compte est déjà enregistré.\n\
		{0099FF}S'il vous plaît, entrez votre mot de passe ci-dessous pour procéder au jeu.\n\n", pInfo[playerid][Name]);
		ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login System", String, "Login", "Leave");
	}
	else
	{
		format(String, sizeof(String), "{FFFFFF}Bienvenue %s.\n\n{0099FF}Ce compte n'est pas enregistré.\n\
		{0099FF}S'il vous plaît, entrez votre mot de passe ci-dessous pour vous connecter.\n\n", pInfo[playerid][Name]);
		ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration System", String, "Register", "Leave");
	}
	return 1;
}

forward OnPlayerRegister(playerid);
public OnPlayerRegister(playerid)
{
	SendClientMessage(playerid, 0x00FF00FF, "Vous êtes maintenant inscrit et connecté.");
    pInfo[playerid][LoggedIn] = true;
    return 1;
}

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bah à aucun moment tu appelles une fonction pour le faire spawn :weird:

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 34 minutes, C_far a dit :

Bah à aucun moment tu appelles une fonction pour le faire spawn :weird:

Je sais mais sa marche quand même, sauf que j'ai pas de message disant que je suis pas logué au serveur une fois que j'ai rentré mon mot de passe

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 33 minutes, coti963 a dit :

Je sais mais sa marche quand même, sauf que j'ai pas de message disant que je suis pas logué au serveur une fois que j'ai rentré mon mot de passe

 

C'est normal, ta requête fait bien plus que 225 caractères, initialise ton tableau DB_Query à 512.

Partager ce message


Lien à poster
Partager sur d’autres sites

Ahhhhh mais oui, suis-je bête, en plus je l'avais mis lors de la connection.... Maintenant ça marche, merci.

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 29/07/2018 à 00:01, coti963 a dit :

mysql_format(Database, DB_Query, sizeof(DB_Query), "INSERT INTO `PLAYERS` (`USERNAME`, `PASSWORD`, `SALT`, `SCORE`, `KILLS`, `ARGENT`, `MORTS`, `ADMIN`, `DUTY`, `VIP`, `SKIN`, `INTDM`, `TETE`, `GPS`, `BRIQUET`, `CIGARETTE`, `BOITEOUTILS`, `GLACIERE`, `DROGUE`, `WARN`, `ARGENTBANQUE`)\ VALUES ('%e', '%s', '%e', '20', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1000')", pInfo[playerid][Name], pInfo[playerid][Password], pInfo[playerid][Salt]);

 

Tu pourrait optimiser cette requête (j'ai pris au hasard j'ai juste survoler le sujet)

Tu pourrait l'optimiser en utilisant dans tes colonne de ta base de donnée en valeur par défaut comme ça tu ne serait pas obliger de les rentrer dans ta requête ce qui te donnerais :

 

mysql_format(Database, DB_Query, sizeof(DB_Query), "INSERT INTO `PLAYERS` (`USERNAME`, `PASSWORD`, `SALT`) VALUES ('%e', '%s', '%e')", pInfo[playerid][Name], pInfo[playerid][Password], pInfo[playerid][Salt]);

ce qui te permettrais de baisser le nombre d'octet alloué a ton array

(C'est juste un recommandation ;))

Partager ce message


Lien à poster
Partager sur d’autres sites

Également, les variables de ton énumération n'ont aucun préfixe et des noms trop basiques. Tu vas avoir pas mal de problème par la suite lors de déclaration de nouvelles variables. :rich:

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 16 heures, Dayrion a dit :

Également, les variables de ton énumération n'ont aucun préfixe et des noms trop basiques. Tu vas avoir pas mal de problème par la suite lors de déclaration de nouvelles variables. :rich:

Aucun préfixe ? Tu veux dire quoi par la ?

 

Le 31/07/2018 à 01:32, vitespirite a dit :

 

Tu pourrait optimiser cette requête (j'ai pris au hasard j'ai juste survoler le sujet)

Tu pourrait l'optimiser en utilisant dans tes colonne de ta base de donnée en valeur par défaut comme ça tu ne serait pas obliger de les rentrer dans ta requête ce qui te donnerais :

 

mysql_format(Database, DB_Query, sizeof(DB_Query), "INSERT INTO `PLAYERS` (`USERNAME`, `PASSWORD`, `SALT`) VALUES ('%e', '%s', '%e')", pInfo[playerid][Name], pInfo[playerid][Password], pInfo[playerid][Salt]);

ce qui te permettrais de baisser le nombre d'octet alloué a ton array

(C'est juste un recommandation ;))

 

Je prends en compte ta recommandation

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 4 minutes, coti963 a dit :

Aucun préfixe ? Tu veux dire quoi par la ?

Que ta façon de nommer les constantes de tes enums est à revoir.

J'te donne un exemple de mon GM :

 

enum E_ACCOUNT_INFO {
    bool:E_ACC_LOGGED,
    E_ACC_DBID,
    E_ACC_NAME[MAX_PLAYER_NAME],
    E_ACC_PASSWORD[MAX_STRING_LENGTH_PASSWORD],
    E_ACC_IP[MAX_STRING_LENGTH_IP],
    E_ACC_EMAIL[MAX_STRING_LENGTH_MAIL],
    E_ACC_PHONE_NUMBER[MAX_STRING_LENGTH_PHONE_NUMBER],
    UID:E_ACC_UID,
    E_ACC_LEVEL_STAFF,
    bool:E_ACC_MODE_STAFF,
  ...

 

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a une heure, C_far a dit :

Que ta façon de nommer les constantes de tes enums est à revoir.

J'te donne un exemple de mon GM :

 

enum E_ACCOUNT_INFO {
    bool:E_ACC_LOGGED,
    E_ACC_DBID,
    E_ACC_NAME[MAX_PLAYER_NAME],
    E_ACC_PASSWORD[MAX_STRING_LENGTH_PASSWORD],
    E_ACC_IP[MAX_STRING_LENGTH_IP],
    E_ACC_EMAIL[MAX_STRING_LENGTH_MAIL],
    E_ACC_PHONE_NUMBER[MAX_STRING_LENGTH_PHONE_NUMBER],
    UID:E_ACC_UID,
    E_ACC_LEVEL_STAFF,
    bool:E_ACC_MODE_STAFF,
  ...

 

 

Ahhh, je viens de comprendre, merci

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai un autre problème, quand je me connecte tout ce passe bien, sauf que cela n'enregistre pas mes données quand je me déconnecte

Partager ce message


Lien à poster
Partager sur d’autres sites

@coti963

Montre nous ton code pour la sauvegarde avec la requête SQL ;)

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 45 minutes, Jhonny a dit :

@coti963

Montre nous ton code pour la sauvegarde avec la requête SQL ;)

Voici le code : 

Corrupt_Check[playerid]++;

	new DB_Query[512];
	mysql_format(Database, DB_Query, sizeof(DB_Query), "UPDATE `PLAYERS` SET `SCORE` = %d, `ARGENT` = %d, `KILLS` = %d, `MORTS` = %d, `ADMIN` = %d, `DUTY` = %d, `VIP` = %d, `SKIN` = %d, `INTDM` = %d, `TETE` = %d, `GPS` = %d, `BRIQUET` = %d, `CIGARETTE` = %d, `BOITEOUTILS` = %d, `GLACIERE` = %d, `DROGUE` = %d, `WARN` = %d, `ARGENTBANQUE` = %d WHERE `ID` = %d LIMIT 1",
	JoueurInfo[playerid][Score], JoueurInfo[playerid][Argent], JoueurInfo[playerid][Kills], JoueurInfo[playerid][Morts], JoueurInfo[playerid][Admin], JoueurInfo[playerid][Duty], JoueurInfo[playerid][Vip], JoueurInfo[playerid][Skin], JoueurInfo[playerid][InTDM], JoueurInfo[playerid][Tete], JoueurInfo[playerid][GPS], JoueurInfo[playerid][Briquet], JoueurInfo[playerid][Cigarette], JoueurInfo[playerid][BoiteOutils], JoueurInfo[playerid][Glaciere], JoueurInfo[playerid][Drogue], JoueurInfo[playerid][Warn], JoueurInfo[playerid][ArgentBanque], JoueurInfo[playerid][ID]);

	mysql_tquery(Database, DB_Query);

	if(cache_is_valid(JoueurInfo[playerid][Player_Cache]))
	{
		cache_delete(JoueurInfo[playerid][Player_Cache]);
		JoueurInfo[playerid][Player_Cache] = MYSQL_INVALID_CACHE;
	}

	JoueurInfo[playerid][LoggedIn] = false;
	print("OnPlayerDisconnect a été appelé.");

 

Partager ce message


Lien à poster
Partager sur d’autres sites
UPDATE `PLAYERS` SET `SCORE` = %d, `ARGENT` = %d, `KILLS` = %d, `MORTS` = %d, `ADMIN` = %d, `DUTY` = %d, `VIP` = %d, `SKIN` = %d, `INTDM` = %d, `TETE` = %d, `GPS` = %d, `BRIQUET` = %d, `CIGARETTE` = %d, `BOITEOUTILS` = %d, `GLACIERE` = %d, `DROGUE` = %d, `WARN` = %d, `ARGENTBANQUE` = %d WHERE `ID` = %d LIMIT 1",

Pour les colonnes de tes tables, il n'y a pas de ` à mettre, ça doit alors être :

UPDATE `PLAYERS` SET SCORE = %d, ARGENT = %d, KILLS = %d, MORTS = %d  /*et ainsi de suite...*/

L'utilisation d'update est renseignée sur ce site : http://sql.sh/cours/update

 

PS: Je me suis renseigné sur divers sites je n'ai vu aucun ` entouré le nom des colonnes mais parfois des apostrophes entourent la valeur à mettre et parfois non, dans mes requêtes j'en ai pas mis et ça fonctionne tout de même, y a-t-il une réelle différence d'en mettre ou pas ? 

Partager ce message


Lien à poster
Partager sur d’autres sites

@Jhonny tu peux nous dire ce que te dit le mysql.log ?

Partager ce message


Lien à poster
Partager sur d’autres sites
[15:09:00] [DEBUG] mysql_format - connection: 1, len: 256, format: "UPDATE `joueurs` SET Pseudo = %s, MotDePasse = %s, Salt = %s, Mail = %s, Langue = %b, Admin = %i, Skin = %i"
[15:09:00] [DEBUG] mysql_tquery - connection: 1, query: "UPDATE `joueurs` SET Pseudo = [Exo]Jhonny, MotDePasse = 42170939", callback: "(null)", format: "(null)"
[15:09:00] [DEBUG] CMySQLQuery::Execute[] - starting query execution
[15:09:00] [ERROR] CMySQLQuery::Execute[] - (error #1064) Erreur de syntaxe près de '[Exo]Jhonny, MotDePasse = 421709399846B55953C699987A945E473E48FD4EE0C9B089F9371F' à la ligne 1
[15:09:00] [DEBUG] CMySQLQuery::Execute[] - error will be triggered in OnQueryError

Chuuuuuuuut faut pas le dire :').

Du coup j'ai compris, merci :)

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 7 minutes, Jhonny a dit :

Du coup j'ai compris, merci :)

:smirk:

Partager ce message


Lien à poster
Partager sur d’autres sites
Citation

PS: Je me suis renseigné sur divers sites je n'ai vu aucun ` entouré le nom des colonnes mais parfois des apostrophes entourent la valeur à mettre et parfois non, dans mes requêtes j'en ai pas mis et ça fonctionne tout de même, y a-t-il une réelle différence d'en mettre ou pas ? 

 

Salut, quand tu utilises des chaînes de caractère il faut utiliser des simple quote (') pour entourer tes valeurs.

 

INSERT INTO personne(id, nom) VALUES(1, 'toto');

 

Pour ce qui concerne le caractère ` pour entourer des noms de colonnes ça ne sert que si tu as des espaces dans ton nommage... C'est inutile, c'est un truc de puriste propre à MySQL, mais lorsque tu utilises des vrais SGBD comme oracle ou sql server ça ne sert a rien d'en mettre. D'ailleurs vaut mieux ne pas en mettre si un jour tu décides de porter ta base sur un autre SGBD...

1 personne aime ça

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant