'assess_2012'というテーブルからレコードを取得し、'assess_2012_err'というテーブルに書き込む必要のあるレコードを多次元配列に格納するBash/PHPスクリプトを入手しました。
#!/usr/bin/php -q
<?php
$host = "localhost";
$user = "username";
$pass = "password";
$name = "reassess";
$conn = mysqli_connect($host, $user, $pass, $name) OR die ("Could not connect to database: " . mysqli_error($conn) . "\n");
$q = "SELECT su_id, ass_date, ind_d FROM assess_2012";
$r = mysqli_query ($conn, $q);
if ($r) {
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
// Check for errors:
if ($row['ind_d'] == 'Y') {
// Add to the array:
$sql[] = array('su_id' => $row['su_id'], 'err_code' => 1);
}
}
var_dump($sql);
}
else {
// SELECT query failed:
echo "Error: " . mysqli_error($conn) . "\n";
}
?>
'var_dump'は次のようになります(短縮バージョン-実際のクエリは数百のレコードを返します):
array(1) {
[0]=>
array(2)
["su_id"]=>
string(1) "5"
["err_code"]=>
int(1)
}
[1]=>
array(2) {
["su_id"]=>
string(4) "1492"
["err_code"]=>
int(1)
}
}
私が理解できないのは、配列を使用して次のようなクエリを生成する方法です。
INSERT INTO assess_2012_err (su_id, err_code) VALUES (5, 1), (1492, 1)