24.07.2018, 21:54
Como executar vбrias instruзхes em uma mesma query MySQL
HistуriaEstava 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();
}
PHP код:
mysql_set_options(MySQLOpt:option_id, E_MYSQL_OPTION:type, ...)
![](https://i.imgur.com/9JjiBig.png)
(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_options, AUTO_RECONNECT, true);
mysql_set_option(mysql_options, MULTI_STATEMENTS, true);
}
PHP код:
new MySQL:handler;
public OnGamemodeInit()
{
new MySQLOpt:mysql_opcoes = mysql_init_options();
mysql_set_option(mysql_opcoes, AUTO_RECONNECT, true);
mysql_set_option(mysql_opcoes, MULTI_STATEMENTS, true);
handler = mysql_connect(MySQL_HOST, MySQLSQL_USER, MySQLSQL_PASS, MySQLSQL_DB,mysql_opcoes);
}
Й 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')
"
);
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.