我試圖切換一些硬編碼查詢以使用參數化輸入,但我遇到了一個問題:如何格式化參數化批量插入的輸入?批量參數化插入
目前,代碼如下:
$data_insert = "INSERT INTO my_table (field1, field2, field3) ";
$multiple_inserts = false;
while ($my_condition)
{
if ($multiple_inserts)
{
$data_insert .= " UNION ALL ";
}
$data_insert .= " SELECT myvalue1, myvalue2, myvalue3 ";
}
$recordset = sqlsrv_query($my_connection, $data_insert);
的潛在解決方案(從How to insert an array into a single MySQL Prepared statement w/ PHP and PDO修改)似乎是:
$sql = 'INSERT INTO my_table (field1, field2, field3) VALUES ';
$parameters = array();
$data = array();
while ($my_condition)
{
$parameters[] = '(?, ?, ?)';
$data[] = value1;
$data[] = value2;
$data[] = value3;
}
if (!empty($parameters))
{
$sql .= implode(', ', $parameters);
$stmt = sqlsrv_prepare($my_connection, $sql, $data);
sqlsrv_execute($stmt);
}
有沒有更好的方式來完成與參數化批量插入疑問?
一個潛在的解決方案,具體到預處理語句,是「單獨準備,多次執行」 – 2011-01-11 15:38:01
我試圖避免這樣做,以限制事務處理的需要。如果任何一個插入失敗,整個操作將失敗。 – 2011-01-11 15:50:09
什麼交易? – 2011-01-11 15:59:29