Dans des scénarios tels que l'inscription en ligne, les utilisateurs sélectionnent souvent plusieurs articles qu'ils souhaitent acheter, s'inscrire ou rejoindre. Ces éléments sont généralement stockés dans des tableaux pour faciliter leur traitement. Cependant, l'insertion de données de tableaux dans des bases de données MySQL à l'aide d'instructions préparées en PHP et PDO peut s'avérer difficile. Cet article explore les méthodes permettant de surmonter ce défi.
Une approche consiste à utiliser une boucle for et à exécuter plusieurs instances de l'instruction SQL, comme indiqué ci-dessous :
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]));
}
Bien que cette méthode soit relativement simple, elle présente des problèmes de performances lors du traitement de grands ensembles de données.
Une approche plus efficace consiste à créer dynamiquement une seule instruction SQL. On peut y parvenir en parcourant le tableau et en générant une liste d'espaces réservés et de valeurs séparés par des virgules entre parenthèses :
$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);
}
Cette méthode combine efficacement les données individuelles en une seule requête pour l'insertion dans la base de données. Il garantit un traitement efficace et une surcharge réduite, ce qui le rend adapté aux scénarios avec de grands ensembles de données ou lorsque l'optimisation des performances est critique.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3