私は複数列のHTMLフォームからMYSQLデータベースに渡される複数の行を挿入するために、以下の配列を作成しました。私が何をしているのか分からないのは、複数の行を正しく挿入するために既に構築したものを変更する方法です。私は以下のコードと例を提供しました。投稿されたPHP配列をMYSQLに挿入
<?php
include 'connect.php';
$records= array(
'palid' => $_POST['LPN'],
'auditor' => $_POST['ANAME'],
'itnum' => $_POST['Part'],
'ordid' => $_POST['Order'],
'pckusr' => $_POST['Picker'],
'expected' => $_POST['Eaches'],
'actual' => $_POST['Actual']);
$keys = implode(', ', array_keys($records));
$col = array();
foreach ($records as $rowValues) {
foreach ($rowValues as $key => $rowValue) {
$rowValues[$key] = $rowValues[$key];
}
$col[] = "(" . implode(', ', $rowValues) . ")";
}
$query = "INSERT INTO audit ($keys) VALUES " . implode (', ', $col);
echo $query;
$result = mysqli_query($connection, $query) or die(mysqli_error($connection));
?>
echo $ query;下の図は、連結された個々の行ではなく、連結された各列の3行すべての値を示しています。
INSERT INTO audit(palid, auditor, itnum, ordid, pckusr, expected, actual) VALUES(0010070382, 0010070382, 0010070382), (aud01, aud01, aud01), (2616M, 2216T, 1216F), (5167-2, 5167-2, 5167-2), (LION, LION, LION), (30, 300, 402), (30, 300, 402)
それは次のようになりますと:
INSERT INTO audit(palid, auditor, itnum, ordid, pckusr, expected, actual) VALUES(0010070382, aud01, 2616M, 5167-2, LION, 30, 30), (0010070382, aud01, 2216T, 5167-2, LION, 300, 300), (0010070382, aud01, 1216F, 5167-2, LION, 402, 402)
私が使うのvar_dump($記録)。配列は以下の情報を渡しますが、3つの行をMYSQLデータベースに渡すために関連する各グループに情報をどのように作成するかをまだ分かりません。
array(7)
{
["palid"] => array(3)
{
[0] => string(10) "0010070382"
[1] => string(10) "0010070382"
[2] => string(10) "0010070382"
}
["auditor"] => array(3)
{
[0] => string(5) "aud01"
[1] => string(5) "aud01"
[2] => string(5) "aud01"
}
["itnum"] => array(3)
{
[0] => string(5) "2616M"
[1] => string(5) "2216T"
[2] => string(5) "1216F"
}
["ordid"] => array(3)
{
[0] => string(6) "5167-2"
[1] => string(6) "5167-2"
[2] => string(6) "5167-2"
}
["pckusr"] => array(3)
{
[0] => string(4) "LION"
[1] => string(4) "LION"
[2] => string(4) "LION"
}
["expected"] => array(3)
{
[0] => string(2) "30"
[1] => string(3) "300"
[2] => string(3) "402"
}
["actual"] => array(3)
{
[0] => string(2) "30"
[1] => string(3) "300"
[2] => string(3) "402"
}
}
はXSS http://stackoverflow.com/questions/568995/best-way-to-defend-against-mysql-injection-and-cross-site-scripting?answertab=active#tab-topを忘れてはいけません –
**警告**:mysqliを使用する場合は、[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と['bind_param']( http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してクエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'や' $ _GET'データを直接クエリに入れないでください。誰かがあなたのミスを悪用しようとすると、非常に危険です。 – tadman