Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde... preciso de uma ajuda para fazer um "insert" de varios registro no meu banco de dados. Estou usando PHP, e o banco Mysql.
Vamos lá.. Eu fiz uma lista de inserts à partir de um arquivo .VCF(Lista de contatos). Nesse arquivo que eu gerei ficou da seguinte forma:
insert into PESSOA_TEL (telefone, cod_pessoa) values ("11 0000-0000", cod_pessoa)
insert into PESSOA_TEL (telefone, cod_pessoa) values ("11 99214-8620" , cod_pessoa)
insert into PESSOA (nome, endereco, grupo) values ("Nome do Cliente", "Endereço do Cliente", "CLIENTE")
Bom, para explicar melhor.. tenho uma tabela de clientes, e outra tabela com os telefones dos clientes que está relacionada ao cliente atravez do "cod_pessoa". O que eu preciso fazer é ordenar os inserts. Eu preciso deixar o primeiro "insert" o da tabela "PESSOA", para depois fazer o insert da tabela PESSOA_TEL e colocar no lugar do "cod_pessoa" last_insert_id() para a tabela pessoa_tel pegar o cod do cliente. Aí ficaria assim:
insert into PESSOA (nome, endereco, grupo) values ("Nome do Cliente", "Endereço do Cliente", "CLIENTE")
$cod_cliente= last_insert_id();
insert into PESSOA_TEL (telefone, cod_pessoa) values ("11 0000-0000", $cod_pessoa)
insert into PESSOA_TEL (telefone, cod_pessoa) values ("11 99214-8620" , $cod_pessoa)
//Sei que a linha: "$cod_cliente= last_insert_id()" esta errada, mas foi só pra exemplo...
É isso que preciso fazer. Imagino que não deve ser muito complicado, mas gostaria de ajuda para agilizar o meu projetinho, pois não sou programador... Estou fazendo um primeiro projeto, então essas coisas simples, pra mim demoram um pouco mais para resolver.
Beleza... entendi.. Muito obrigado Evandro Oliveira.
Assim que possível vou alterar meu código, e posto se houver sucesso.. Mas parece q vai ser tranquilo.. Obrigado!!
Blz cara.. deu certinho... eu deixei meu código maio ou menos assim...
$string='
|select @cod_pessoa:=(select last_insert_id()) as cod_pessoa
|insert into pessoa_mail (email, cod_pessoa) values ("cliente@email.com.br", @cod_pessoa)
|insert into PESSOA_TEL (telefone, cod_pessoa) values ("11 0000-0000", @cod_pessoa)
|insert into PESSOA_TEL (telefone, cod_pessoa) values ("11 0000-0000" , @cod_pessoa)
|insert into PESSOA (nome, endereco, grupo) values ("Nome do Cliente", "Endereço do Cliente", "CLIENTE")
§
|select @cod_pessoa:=(select last_insert_id()) as cod_pessoa
|insert into pessoa_mail (email, cod_pessoa) values ("cliente@email.com.br", @cod_pessoa)
|insert into PESSOA_TEL (telefone, cod_pessoa) values ("11 0000-0000", @cod_pessoa)
|insert into PESSOA_TEL (telefone, cod_pessoa) values ("11 0000-0000" , @cod_pessoa)
|insert into PESSOA (nome, endereco, grupo) values ("Nome do Cliente", "Endereço do Cliente", "CLIENTE")
§'
$registro= explode("§", $string);
for ($i=0; $i<=(count($registro)); $i++) {
$subregistro= explode("|", $registro[$i]);
$insert_pessoa= array_pop($subregistro);
array_unshift($subregistro, $insert_pessoa);
for ($j=0; $j<=(count($subregistro)); $j++) {
mysql_query($subregistro[$j]);
echo mysql_error($conexao);
}
}
Alterei o delimitador para cada registro para "|" e outro "§" para quando acabasse a inserção nas três tabelas (telefones, emails e cliente). Depois disso fiz um dois "for"s e rodei!
Muito obrigado!!!
1. Separe em blocos de INSERT INTO PESSOA
http://php.net/explode
2. Mova a última linha para o começo
http://php.net/array_pop
http://php.net/array_unshift
3. se for manter como SQL, pode usar a função https://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id'>last_insert_id
Para armazenar em variáveis, você faz https://dev.mysql.com/doc/refman/5.0/en/user-variables.html'>assim