Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá Pessoal
Li num artigo sobre desempenho, onde dizia que é importante executar o menor numero de consultas ao banco de dados para ganhar velocidade, nada mais lógico.
Mas tinha passado despercebido por mim em um código que havia escrito.
Estou reescrevendo, ele faz uma varredura na tabela a procura de campos em branco, para preencher com determinado valor que vem de outra tabela.
SELECT * FROM tabela WHERE campo IS NULL
Até aqui perfeito, em seguida rodo um looping com o resultados da Query anterior e dentro de cada repetição do laço faço outro SELECT em outra tabela para extrair um dado X que em seguida deve ser atualizado no registro atual do looping.
Mas neste momento tento seguir a recomendação do artigo e tenho um problema.
Ao invés de executar diversos UPDATE no banco de dados a cada volta do looping armazeno eles em uma variável para rodar ao final.
$query .= sprintf("UPDATE tabela SET campo = '%s' WHERE campo = '%s';" $novovalor; $id);
O problema esta quando pego essa variavel e passo para a função mysql_query() do PHP;
Se peço para imprimir na tela todo comando SQL, copio e colo no phpmyadmin funciona perfeitamente, porem quando passo é executado pelo mysql_query acusa erro de sintaxe.
Fui ver a documentação do mysql_query e la diz que o comando não pode terminar em ponto e virgual, acredito que seja por isso.
Vocês que tem uma infinita experiência a mais que a minha como faço para resolver isso?
Infelizmente o mysql_query() não suporta consulta multipla, ouvi dizer que o mysqli_query() tem este suporte, mas nunca testei
Tem este site aqui que ensina fazer multipla consulta com uma linha, mas no final das contas ele ta apenas diminuindo o codigo mas não a quantidade de consultas ao banco
http://www.dev-explorer.com/articles/multiple-mysql-queries