Я пытаюсь обновить более 3000 записей в моей таблице базы данных одним массовым запросом, однако наткнулся на дорожный блок с моим массивом id. Хотите знать, что я делаю не так здесь?
Вот ошибка, которую я получаю:
проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с ‘) КОНЕЦ ГДЕ 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;
}
Любая помощь будет принята с благодарностью.
Идентификаторы являются строками — они должны быть заключены в кавычки:
$id_list = '"' . implode('","', $uniqueIDArray) . '"';
Других решений пока нет …