2013-04-14 59 views
-1

我使用PDO來處理(MYSQL)數據庫。當我保存結果時,這個SQL沒有更新列值,它將創建一個新的保存值的新行。什麼是錯誤,我done.Is有任何人可以幫助我瞭解與PDOPRO Prepaid Statement中的DUPLICATE KEY UPDATE

$SQL =<<<'EOD' 
CREATE TABLE IF NOT EXISTS pard_admin_config(
title varchar(255) NOT NULL, 
online varchar(100), 
offline varchar(100), 
email varchar(100), 
metades varchar(200), 
metakey varchar(200), 
copyright varchar(200), 
pard_host varchar(100), 
pard_database varchar(100), 
username varchar(100), 
password varchar(100) 
) 
EOD; 

$pardConfig->query($SQL); 


$stmt = $pardConfig->prepare("INSERT INTO pard_admin_config (title, online, offline, email, metades, metakey, copyright, pard_host, pard_database, username, password) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
ON DUPLICATE KEY UPDATE 
title='?', online='?', offline='?', email='?', metades='?', metakey='?', copyright='?', pard_host='?', pard_database='?', username='?', password='?'"); 

$ConfigData = array($adminConfig->TITLE, 
$adminConfig->ONLINE, 
$adminConfig->OFFLINE, 
$adminConfig->EMAIL, 
$adminConfig->METADESCRIPTION, 
$adminConfig->METAKEYWORDS, 
$adminConfig->COPYRIGHT, 
$adminConfig->HOST, 
$adminConfig->DATABASE, 
$adminConfig->USERNAME, 
$adminConfig->PASSWORD); 
$stmt->execute($ConfigData); 

回答

0

這種行爲,這不是PDO的行爲,但MySQL的

你需要指定或者相同值的兩倍,或使用價值()功能

ON DUPLICATE KEY UPDATE 
title= values(title), online=values(online), and so on 

也注意到,將佔位符放在引號中是沒有意義的。

+0

重複密鑰更新 title = values(title),online = values(online),offline = values(offline),email = values(email),metades = values(metades),metakey = values(metakey),版權=值(版權),pard_host =值(pard_host),pard_database =值(pard_database),用戶名=值(用戶名),密碼=值(密碼)「); – wasana

+0

這是否正確?? – wasana

+0

沒有不工作像上面? – wasana

相關問題