Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Inserção em massa do MySQL via PHP


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 .