2016-04-03 24 views
0

Bu benim ilk kez kullanıyorum .. yinelenen üzerine, bir sorunum var. Yinelenen güncellemede eklediğim tam olarak beklediğim gibi çalışmaz, örneğin, DB'mdeki bir tabloyu güncellemeye çalıştığımda, DB'nin beklendiği gibi güncellenen satır yerine yeni bir satır eklenir. Çok ilginç. Birinin bir bakışı olup olmadığını kabul edip edemeyeceğini merak ediyordum. Bu arada birincil ve benzersiz bir anahtarım var.INSERT ... DUPLICATE ANAHTAR GÜNCELLEME beklendiği gibi çalışmaz

if (isset($_POST['update'])) { 
     $a = mysqli_real_escape_string($dbc, $_POST['a']); 
     $b = mysqli_real_escape_string($dbc, $_POST['b']); 
     $c = mysqli_real_escape_string($dbc, $_POST['c']); 

     $insert = "INSERT INTO details 
    (a 
    , b 
    , c 
) 
    VALUES 
    (? 
    , ? 
    , ? 
) 
ON DUPLICATE KEY 
UPDATE a = VALUES (a) 
    , b = VALUES(b) 
    , c = VALUES(c)"; 

     $row = mysqli_prepare($dbc, $insert); 

     mysqli_stmt_bind_param($row, 'sss',$a $b, $c); 

     /* execute query */ 
     $execute = mysqli_stmt_execute($row); 

     if ($execute) { 
      echo "success"; 
     } else { 
      echo "error "; 
     } 
     } 

TABLO

Sizin $insert sorgu yakın bir tırnak işareti eksik
CREATE TABLE `Rest_Details` (
    `A` int(34) NOT NULL AUTO_INCREMENT, 
    `B` varchar(100) NOT NULL, 
    `C` varchar(200) NOT NULL, 
    PRIMARY KEY (`A`), 
    UNIQUE KEY `B` (`B`) 
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 
+0

bir satır güncellemek istiyorsanız, 'UPDATE' kullanın. 'DÜŞÜSTEN ANAHTAR GÜNCELLEME IN INSERT columns genellikle sütunlar ve sorgu değerlerinde bulunan bir otomatik arttırma birincil anahtarı olduğunda mantıklı değildir. –

cevap

0

:

$insert = "INSERT INTO details 
    (a 
    , b 
    , c 
) 
    VALUES 
    (? 
    , ? 
    , ? 
) 
ON DUPLICATE KEY 
UPDATE a = VALUES (a) 
    , b = VALUES(b) 
    , c = VALUES(c)" 
+0

bunu belirttiğiniz için teşekkür ederim, maalesef hala aynı sorunları yaşıyorum – JJ123

İlgili konular