[Ajuda] MySQL como atribuir valor nulo via SA-MP
#1

Boa noite,

Estou voltando a trabalhar com SA-MP no meu antigo projeto e estou fazendo mudanзas significativas no mesmo, como por exemplo passando todo o sistema de arquivo DOF2 para MySQL. O problema й que possuo uma variбvel em que o jogador pode ou nгo ser dono dessa empresa, sendo assim o campo pode ser nulo. Pesquisei em diversos tutoriais aqui do forum sa-mp e nгo vi nenhum explicando isso ou alguйm que jб passou por essa situaзгo.

Segue um trecho de cуdigo para exemplificar o que estб acontecendo:

Код:
	...
	
	new sQuery[128];
	
	mysql_format(db, sQuery, sizeof(sQuery), "UPDATE empresa set proprietarioEmpresa = '%e' WHERE idEmpresa = %i",
		EmpresaDono[i], EmpresaInfo[i][idEmpresa]);
		
	mysql_query(db, sQuery, false);
O campo proprietarioEmpresa ele pode ser nulo ou possuir o nome de um jogador que no caso й uma foreign key, porйm se eu jogar a variбvel com o format '%e', ele atribuiria o valor NULL como string (errado) e o nome do jogador seria como string (certo). Agora se passar com o format %e (sem aspas simples), ele interpretaria o valor NULL como nulo (certo) e o nome do jogador como uma coluna invбlida (errado).

* No exemplo acima estou fazendo o update apenas de um campo, mas no meu cуdigo original tem muitos outros.
Reply
#2

Por favor, se nгo souber responder nгo responda, o pessoal lк a quantidade de posts e ignora achando que foi resolvido
Reply
#3

se eu soubesse MYSQL te ajudaria namoral
Reply
#4

Coloque um nick padrгo como "Ninguem" e o bloqueie no servidor, depois no sistema faзa a checagem do nick para ver se possui ou nгo dono.

Jб que estб utilizando MySQL, recomendo colocar o ID da conta do jogador em vez de seu nick, alйm de ser mais fбcil o manuseio (troca de nick e variбveis) os IDs comeзam a partir do 1, entгo o 0 pode ser usado para empresa sem dono.
Reply
#5

Код:
if(EmpresaDono[i][0] == '\0') 
		mysql_format(db, sQuery, sizeof(sQuery), "UPDATE empresa SET proprietarioEmpresa = NULL WHERE idEmpresa = %i", EmpresaInfo[i][idEmpresa]);
	else
		mysql_format(db, sQuery, sizeof(sQuery), "UPDATE empresa SET proprietarioEmpresa = '%e' WHERE idEmpresa = %i", EmpresaDono[i], EmpresaInfo[i][idEmpresa]);
Este cуdigo vai verificar a cada loop se a variбvel EmpresaDono й nula ou nгo, caso for, serб inserido valor NULL а coluna, caso nгo for, serб inserido o valor contido na variбvel EmpresaDono.

Gostaria de esclarecer a razгo pela qual esse cуdigo nгo pode utilizar Operaзгo Ternбria: Usando essa operaзгo, o cуdigo ficaria menor, mas daria o mesmo resultado, ao invйs de inserir um valor nulo na coluna, seria inserido o valor NULL como string. Desta forma, a maneira mais adequada й criar uma condiзгo que verifique se a variбvel й nula para definir valor nulo corretamente а coluna.
Reply
#6

Quote:
Originally Posted by F1N4L
Посмотреть сообщение
Код:
if(EmpresaDono[i][0] == '\0') 
		mysql_format(db, sQuery, sizeof(sQuery), "UPDATE empresa SET proprietarioEmpresa = NULL WHERE idEmpresa = %i", EmpresaInfo[i][idEmpresa]);
	else
		mysql_format(db, sQuery, sizeof(sQuery), "UPDATE empresa SET proprietarioEmpresa = '%e' WHERE idEmpresa = %i", EmpresaDono[i], EmpresaInfo[i][idEmpresa]);
Este cуdigo vai verificar a cada loop se a variбvel EmpresaDono й nula ou nгo, caso for, serб inserido valor NULL а coluna, caso nгo for, serб inserido o valor contido na variбvel EmpresaDono.

Gostaria de esclarecer a razгo pela qual esse cуdigo nгo pode utilizar Operaзгo Ternбria: Usando essa operaзгo, o cуdigo ficaria menor, mas daria o mesmo resultado, ao invйs de inserir um valor nulo na coluna, seria inserido o valor NULL como string. Desta forma, a maneira mais adequada й criar uma condiзгo que verifique se a variбvel й nula para definir valor nulo corretamente а coluna.
Pensei nesse modo, porйm continua sendo um modo "feio" se й que me entende... Mesmo assim obrigado.

+rep.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)