2016-07-06 10 views
-1

DBテーブルの3,000レコードを1回のバルククエリで更新しようとしていますが、ID配列を使ってロードブロックを実行しました。私がここで間違っていることを思っていますか?ここでMySQLでバルクアイテムを更新するPHP

は、私が受け取るエラーです:

は近く使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください ')END InventoryID IN(recs8AFaXZWvAlDIP、recvwDSutfQ66Jtj8、recQ1LODI7ED1FRT'

以下のコード:

$sql_connect = mysqli_connect("blah", "blah", "blah", "blah"); 

$sql = "SELECT inventory.MCategoryID, inventory.InventoryID, inventory.SCategoryID, inventory.ManufacturerID, maincategory.CategoryName as mainCategoryNameMatch, subcategory.SubCategoryName as subCategoryNameMatch, manufacturer.ManufacturerName as manufacturerNameMatch FROM inventory LEFT JOIN maincategory ON inventory.MCategoryID = maincategory.AirTableID LEFT JOIN subcategory ON inventory.SCategoryID = subcategory.AirTableSubCategoryID LEFT JOIN manufacturer ON inventory.ManufacturerID = manufacturer.AirTableManufacturerID ORDER BY CambridgeID"; 
$doit = mysqli_query($sql_connect, $sql) or die(mysqli_error($sql_connect)); 
$updateSQL = ''; 
$uniqueIDArray = []; 
$bulkUpdate = ''; 
$bulkID = ''; 
while($results = mysqli_fetch_object($doit)){ 
    $mainCategoryNameResult = $results->mainCategoryNameMatch; 
    $subCategoryNameResult = $results->subCategoryNameMatch; 
    $manufacturerNameResult = $results->manufacturerNameMatch; 
    $uniqueID = $results->InventoryID;  
    $uniqueIDArray[] = $uniqueID; 


    $updateSQL .= "WHEN '$uniqueID' THEN '$mainCategoryNameResult'\n"; 


} 
//echo $updateSQL; 
$id_list = implode(',', $uniqueIDArray);  
echo "UPDATE inventory SET MainCategoryNameMatch = (CASE InventoryID $updateSQL END) WHERE InventoryID IN ($id_list)<br/>"; 
if (mysqli_query($sql_connect, "UPDATE inventory SET MainCategoryNameMatch = (CASE InventoryID $updateSQL) WHERE InventoryID IN ($id_list)") or die(mysqli_error($sql_connect))){ 
    echo $updateSQLStatement; 
} 

任意の助けいただければ幸いです

。の
+2

あなたは(http://bobby-tables.com)[SQLインジェクション攻撃]に対して脆弱であり、クエリにお見せする必要があります生成される。エラースニペットでは、他のエラーの中で、 'in'節に詰め込んでいる値を引用するのを忘れてしまいました。 –

答えて

1

IDが文字列である - 彼らは引用符で囲む必要があります

$id_list = '"' . implode('","', $uniqueIDArray) . '"'; 
関連する問題