Lier un tableau PHP pour l'insertion SQL
P粉928591383
2023-08-08 15:51:43
<p>Essayer de lier un tableau (première liaison de tableau) pour empêcher l'injection SQL</p><p>Ceci est un code valide : </p><p><br /> ;</p> ;
<pre class="lang-php Prettyprint-override"><code>if (isset($_POST['checkbox_selected']))
{
$valuesArr = tableau();
foreach ($_POST['checkbox_selected'] as $key => $value) {
//Récupère l'ID du tableau pour trouver le numéro de ligne de la colonne CSVOption
$findrow = array_search_partial($attributeid, $value);
//Lorsque le formulaire est soumis, la valeur de l'attribut est affectée à l'identifiant de l'attribut
$attribut = $valeur ;
$csv = $csvcolonne[$findrow];
$valuesArr[] = "('$userid', '$feed_id', '$attribute', '$csv')";
}
$sql = "INSERT INTO map (user_id, feed_id, attribue_id, csvcolumn) valeurs » ;
$sql .= implode(',', $valuesArr);
mysqli_query($conn,$sql);
}
</code></pre>
<p>Je ne parviens pas à lier le tableau, j'ai essayé : </p>
<pre class="brush:php;toolbar:false;">$sql = "INSERT INTO map (user_id, feed_id,attribut_id, csvcolumn) VALUES (?, ?, ? ,?)";
$stmt = $conn->préparer($sql);
$stmt->bind_param('iiii', implode(',', $valuesArr));
$stmt->exécuter();
echo imploser(',', $valuesArr)
//('1', '1', '13', '9') //Voici le tableau inséré dans SQL
//(user_id, feed_id,attribut_id, csvcolumn) //Voici la valeur attribuée dans la première instruction</pre>
<p><br /></p>
Vous avez deux problèmes :
Vous n'utilisez pas la syntaxe de liaison correcte.
Vous avez essayé d'insérer plusieurs lignes dans une seule instruction préparée
Le seul léger avantage est que lorsque vous essayez d'envelopper plusieurs VALUES() dans une seule requête, elle sera enveloppée par une transaction implicite. Mais d’autres aspects de cette approche sont désavantageux. En ouvrant explicitement la transaction qui encapsule la boucle de liaison/exécution, vous obtenez les mêmes avantages [annulation d'erreur, traitement par lots d'E/S], tout en profitant également des avantages des instructions préparées [analyse de requête simple, paramétrage, etc.]