Neredeyse tüm gibi sorulara "Ben PHP içinde SQL nasıl yaparsınız" - Sen really hazırlanmış ifadeler kullanmak gerekir. O kadar zor değil:
$ids = array(2, 4, 6, 8);
$sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id = ?";
$stmt = $mysqli->prepare($sql);
for ($i = 0; $i < count($ids); $i++)
{
$stmt->bind_param("i", $ids[$i]);
$stmt->execute();
echo "Updated record ID: $id\n";
}
$stmt->close();
Alternatif olarak, bu satırlar boyunca bunu yapabilirsiniz:
$ids = array(2, 4, 6, 8);
$params = implode(",", array_fill(0, count($ids), "?"));
$sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id IN ($params)";
$stmt = $mysqli->prepare($sql);
call_user_func_array(array($stmt, 'bindparams'), $ids);
$stmt->execute();
$stmt->close();
echo "Updated record IDs: " . implode("," $ids) ."\n";
Her döngü tekrarında tablosuna farklı veri bağlayabilirsiniz ilk seçeneği kullanırken Ama açıkçası ikinci seçenek, sadece aynı veri ile etkilenen tüm kayıtları güncellemek için sınırı olacaktır.
Bir hazır deyimi çağıran bir sürü (mümkünse hiçbir SQL enjeksiyonu) daha güvenli ve sadece parametre değerleri execute()
yerine bütün tabloların üzerine sunucuya gönderilir, çünkü bir döngü içinde bunu yaparken, hem de daha verimli olmasıdır. Uzun süren döngüler bu fark kesinlikle fark olacaktı.