Se você usar uma instrução preparada, poderá fazer um loop sobre seu
$JSON_data
array com um loop foreach e execute o INSERT
com esse pedaço de dados. O uso de instruções preparadas reduzirá a sobrecarga da construção da consulta, simplesmente enviando os novos dados para o banco de dados em cada iteração do loop.
$query = mysqli_prepare("INSERT INTO `MyTable` (`col1`,`col2`,`col3`)
VALUES(?,?,?)");
foreach($JSON_data as $key => $value) {
$query->bind_param('sss',$value["prop1"],$value["prop2"],$value["prop3"];
$query->execute();
}
Observe que o primeiro argumento para
bind_param()
informa quantos valores você vinculará, bem como o tipo de cada valor.s
corresponde a dados de string, i
corresponde a dados inteiros, d
corresponde a double (ponto flutuante) e b
corresponde a dados binários. Uma outra palavra de cautela, NÃO citar quaisquer dados de string, como os
s
datatype diz ao mysql para esperar uma string. Se você citar o ?
na instrução preparada, ele informará que o número de params está errado. Se você citar as strings, elas serão citadas no mysql. EDITAR:
Se você quiser usar o mesmo paradigma (inserindo várias linhas com uma consulta), existem maneiras de fazer isso. Uma maneira é criar uma classe que agregará o
bind_param
chamadas e faça um bind_param ao executar a consulta. O código para isso está aqui
.