pemoamsi 0 Denunciar post Postado Novembro 22, 2013 Boa tarde, estou a correr um ciclo em que o número do array é que possui os valores alguns dos valores a ser adicionados, e precisava de uma ajuda para construir um ciclo. O ciclo que tenho de momento corre o array bidimensional e insere os dados: for ($l = 1; $l <= $maxID; $l++) { for ($m = 1; $m <= $maxID; $m++) { if($insert[$l][$m] != "") { echo $l . " - " . $insert[$l][$m] . " - " . $m . "<br>"; $add = $q->query('INSERT INTO classe (id, nome, disciplina_id, aula_id) VALUES ("' . $l . '", "'.$nome.'", "' . $nova_disciplina_id . '", "'.$m.'");'); } } } O meu problema é a lentidão deste processo quando existem demasiados dados na base de dados, logo pretendia fazer o ciclo primeiro para contruir uma query e depois inserir de uma vez, mas não estou a ver como dar a volta à questão... Compartilhar este post Link para o post Compartilhar em outros sites
paulinhosupriano 103 Denunciar post Postado Novembro 22, 2013 Olá meu amigo. Não entendi sua dúvida. Sua dúvida e para construir a query e executar a mesma ou apenas queria a informação do motivo de lentidão? Compartilhar este post Link para o post Compartilhar em outros sites
pemoamsi 0 Denunciar post Postado Novembro 22, 2013 Eu acredito que a lentidão vem do facto de fazer vários inserts, em vez de, num unico momento, inserir todos os dados na base de dados. O que eu pretendia era uma sugestão de um método para que eu possa inserir tudo de uma vez INSERT INTO xpto (val 1, val 2, val 3) VALUES (1,2,3), (2,3,4), (3,4,5) Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Novembro 23, 2013 Quantos dados vc vai inserir ? (sugiro particionar em queries de no máximo 100 linhas cada). Uma forma de fazer, sem saber se os teus loops estão corretos, é: $arr = Array(); for ($l = 1; $l <= $maxID; $l++) { for ($m = 1; $m <= $maxID; $m++) { if($insert[$l][$m] != "") { echo $l . " - " . $insert[$l][$m] . " - " . $m . "<br>"; $arr[] = '("' . $l . '", "'.$nome.'", "' . $nova_disciplina_id . '", "'.$m.'")'; } } } $values = implode(',', $arr); $add = $q->query('INSERT INTO classe (id, nome, disciplina_id, aula_id) VALUES '. $values); assim vc vai inserir tudo em uma só query. Compartilhar este post Link para o post Compartilhar em outros sites