[Tutorial] Vбrias instruзхes na mesma query MySQL R41-4
#1

Como executar vбrias instruзхes em uma mesma query MySQL
Histуria
Estava pesquisando sobre algumas coisas no forum e encontrei um tуpico perguntando como executar mais de uma instruзгo em uma ъnica query. Nгo era meu objetivo encontrar uma resposta para essa pergunta, mas algum tempo depois vi algo que chamou minha atenзгo e poderia resolver esse problema. Esse pequeno tutorial vai explicar como fazer isso, e espero que sirva para alguйm.

Let's get start it
Para vocк poder finalmente fazer uma query com mais de uma instruзгo, precisa executar alguns simples passos.
Talvez vocк nгo tenha percebido, mas o mysql_connect tem um parametro opcional chamado option_id e essa й a estrela desse tutorial.

Primeiro deve-se criar uma instвncia de opзхes para coneзгo MySQL dessa forma:

PHP код:
public OnGamemodeInit()
{
    new 
MySQLOpt:mysql_opcoes mysql_init_options();

E a partir daн pode-se utilizar a funзгo
PHP код:
mysql_set_options(MySQLOpt:option_idE_MYSQL_OPTION:type, ...) 
para definir as opзхes abaixo na conexгo mysql.

(Fonte: https://sampwiki.blast.hk/wiki/MySQL/R40#mysql_set_option)

*Vou utilizar a opзгo MULTI_STATEMENTS e AUTO_RECONNECT para o tutorial, se quiser utilizar as outras fique a vontade.

Setar MULTI_STATEMENTS como true, permitirб que vocк execute mais de uma instruзгo na mesma consulta, e o AUTO_RECONNECT faz com que o plugin MySQL tente se reconectar caso a conexгo caia por algum motivo.
PHP код:
public OnGamemodeInit()
{
    new 
MySQLOpt:mysql_opcoes mysql_init_options();
    
mysql_set_option(mysql_optionsAUTO_RECONNECTtrue);
    
mysql_set_option(mysql_optionsMULTI_STATEMENTStrue);

Essas configuraзхes devem, por fim, serem utilizadas na conexгo com o banco de dados como ъltimo parвmetro.
PHP код:
new MySQL:handler;
public 
OnGamemodeInit()
{
    new 
MySQLOpt:mysql_opcoes mysql_init_options();
    
mysql_set_option(mysql_opcoesAUTO_RECONNECTtrue);
    
mysql_set_option(mysql_opcoesMULTI_STATEMENTStrue);
    
handler mysql_connect(MySQL_HOSTMySQLSQL_USERMySQLSQL_PASSMySQLSQL_DB,mysql_opcoes);

Como fazer a query agora?
Й preciso tomar cuidado com apenas uma coisa: O tirano do ;
Imaginemos uma tabela chamada `players` que tem as colunas nick e senha. Para inserir dois, trкs whatever novos jogadores nessa tabela, deve-se colocar ponto e virgula para separar as instruзхes, exceto na ъltima.

PHP код:
mysql_query(handler,
"INSERT INTO `players` (`nick`,senha) VALUES ('Jгo','54FD89SDFS21SD8');
INSERT INTO `players` (`nick`,senha) VALUES ('Ramon','@321654@334s'); 
INSERT INTO `players` (`nick`,senha) VALUES ('Calisto','senha123');
INSERT INTO `players` (`nick`,senha) VALUES ('Rosvenal','password')
"
); 
Й claro que normalmente isso nгo aconteceria em um cуdigo, mas pode ser ъtil para criar um registro na tabela `bans` e dar UPDATE na tabela `players` na mesma consulta.

Caso alguйm use mysql_connect_file tambйm й possнvel setar o MULTI_STATEMENTS, porйm isso й feito no prуprio arquivo.

Caso tenha alguma sugestгo ou crнtica fique a vontade para comentar.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)