Em cenários como inscrição on-line, os usuários geralmente selecionam vários itens que desejam comprar, inscrever-se ou juntar. Esses itens geralmente são armazenados em arrays para facilitar seu processamento. No entanto, inserir dados de arrays em bancos de dados MySQL usando instruções preparadas em PHP e PDO pode ser um desafio. Este artigo explora métodos para superar esse desafio.
Uma abordagem é usar um loop for e executar várias instâncias da instrução SQL, conforme visto abaixo:
for($j = 0; $j < (count($data)-1); $j ) {
$stmt = $db->prepare("INSERT INTO table SET memberID=?, programID=?, date_added=NOW()");
$stmt->execute(array($memberid, $data[$j]));
}
Embora esse método seja relativamente simples, ele apresenta problemas de desempenho ao lidar com grandes conjuntos de dados.
Uma abordagem mais eficiente é construir dinamicamente uma única instrução SQL. Pode-se conseguir isso iterando sobre o array e gerando uma lista separada por vírgulas de espaços reservados e valores entre parênteses:
$sql = 'INSERT INTO table (memberID, programID) VALUES ';
$insertQuery = array();
$insertData = array();
foreach ($data as $row) {
$insertQuery[] = '(?, ?)';
$insertData[] = $memberid;
$insertData[] = $row;
}
if (!empty($insertQuery)) {
$sql .= implode(', ', $insertQuery);
$stmt = $db->prepare($sql);
$stmt->execute($insertData);
}
Este método combina efetivamente os dados individuais em uma única consulta para inserção no banco de dados. Ele garante processamento eficiente e sobrecarga reduzida, tornando-o adequado para cenários com grandes conjuntos de dados ou quando a otimização do desempenho é crítica.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3