Bir mysql hatası yinelenen bir anahtar döndürdüğünde bir ekin ardından bir kaydın kimliğini (birincil anahtar) almanın bir yolu var mı?mysql yinelenen hata döndürdüğünde kayıt kimliği al
E.G. Bu konuda giderdim Nasıl:
İşte$sql = "INSERT INTO table (`col1`, `col2`) VALUES ('$val1', '$val2')";
$result = mysql_query($sql);
if($result){
$id = mysql_insert_id();
}
else {
if(stristr(mysql_error(), "duplicate"){
$sql = "SELECT `id` FROM `table` WHERE `col1`='$val1' AND `col2`='$val2'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$id = $row['id'];
}
else {
die(mysql_error());
}
}
Ben zaman ve emek alır ama aynı zamanda kod yinelenen sadece iki sql ifadeleri yapmak zorunda kalmıştım.
ON DUPLICATE KEY UPDATE
kullanamıyorum çünkü son eklenen kimliği veya çoğaltılamayan kaydın kimliğini kullanarak farklı bir tabloyu güncelleştirmek istiyorum.
Peki, yaptığım şey doğru mu? Ya da satırın kimliğini almanın bir yolu var mı?
Teşekkür
Serin, bilgi ve ipuçları için teşekkürler. –
Yardım ettiğine sevindim. Bir not ekleyeyim: Açıkçası, "UPDATE İÇİN" eşleşme olmadığında hiçbir şeyi kilitleyemez. Kontrolden hemen sonra diğer eşzamanlı süreç tarafından oluşturulan kaydı alabilirsiniz. Sadece bunu hesaba kat. –
Tamam, teşekkürler. InnoDB kullanmıyorum ve asla sahip olmadığın için, neden bahsettiğinden emin değilim! : p Ama ona bakmalıyım. :) –