Güncelleme ve veritabanına ekleyerek en kötü şansa sahip oldum. Veritabanımdaki eklerim mükemmel çalışıyor, sadece güncelleme yapıyorum.MYSQL - DUPLICATE TUŞU güncellenmiyor
Biri diğerini güncellemek için iki ayrı sorgudan yoruldum, ancak güncelleştirme hiçbir zaman çalışmaz. Şu anda AÇIK DUPLICATE KEY tetikleyicisini kullanıyorum ve bir kez daha bilgi güncellemek yerine her seferinde bir kayıt ekliyor. Nerede yanlış gidiyorum? Bunun üzerinde bir buçuk yıldır çalışıyordum ve hiçbir yere ulaşamadım. newbee sorunları!
<?php
$Cust_ID = $_SESSION["CustomerID"];
if (isset($_POST['Update'])) {
$c_fname = $_POST['fname'];
$c_lname = $_POST['lname'];
$c_email = $_POST['email'];
$c_phone = $_POST['phone'];
// Save $_POST to $_SESSION
//query
$insert_det = "INSERT INTO Cus_acc_details(CUS_Fname,CUS_Lname,Cus_Email,CUS_Phone)
VALUES (?,?,?,?)
ON DUPLICATE KEY
UPDATE
CUS_Fname = '$c_fname',
Cus_Lname = '$c_lname'";
$stmt = mysqli_prepare($dbc, $insert_det);
//new
// $stmt = mysqli_prepare($dbc, $insert_c);
//debugging
//$stmt = mysqli_prepare($dbc, $insert_c) or die(mysqli_error($dbc));
mysqli_stmt_bind_param($stmt, 'sssi', $c_fname, $c_lname, $c_email, $c_phone);
/* execute query */
$r = mysqli_stmt_execute($stmt);
// if inserted echo the following messges
if ($r) {
echo "<script> alert('registration sucessful')</script>";
}
} else {
echo "<b>Oops! Your passwords do not </b>";
}
?>
HTML
<section class="container">
<form id="myform " class="Form" method="post" action="Cus_Account.php?c_id=<?php echo $c_id ?>" accept-charset="utf-8">
<!-- <div id="first">-->
<input type="text" id="fname" name="fname" value="<?php echo $_SESSION['fname']; ?>" required>
<input type="text" id="lname" name="lname" value="<?php echo $_SESSION['lname']; ?>" required>
<input type="text" id="email" name="email" value="<?php echo $_SESSION['Cus_Email']; ?>" required>
<input type="number" id="phone" name="phone" value="<?php echo $_SESSION['phone']; ?>" required>
<input type="submit" name="Update" value="Update">
<br>
</form>
CUSTOMER_ID ve saha en bd gibi benzersiz ayarlanır cus-sağlamamız gerekti, ancak, kayıt db içine ekleyerek devam ikisi. herhangi bir yardım takdir edilecektir.
GÖSTER Sen hiç
UNIQUE KEY CustomerID_2 (CustomerID, Cus_Email)
değiştirmeniz gerekir
CREATE TABLE `Cus_acc_details` (
`CustomerID` tinyint(11) NOT NULL AUTO_INCREMENT,
`AcctId` varchar(100) NOT NULL,
`CUS_Fname` varchar(45) DEFAULT NULL,
`Cus_Lname` varchar(45) DEFAULT NULL,
`CUS_Phone` varchar(45) NOT NULL,
`Cus_Email` varchar(200) NOT NULL,
PRIMARY KEY (`CustomerID`),
UNIQUE KEY `CustomerID` (`CustomerID`),
UNIQUE KEY `CustomerID_2` (`CustomerID`,`Cus_Email`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=outfit
Eğer soruya 'GÖSTER CREATE TABLE Cus_acc_details' çıkışını ekleyebilir miyim? – Barmar
Tek başına "cus_email" endeksi kendi başına mı, yoksa (customer_id, cus_email) 'gibi birleşik bir dizin midir? İkincisi 'cus_email' benzersiz, sadece kimlik ve e-posta kombinasyonu yapmaz. Eklenen her satır farklı bir kimlik aldığından, yinelenen anahtar koşulu gerçekleşmez. – Barmar
@Barmar bunu nasıl aşacağım. fname olarak, lname – jerneva