2015-05-20 83 views
3

這是我的表:(唯一的主鍵是alias更新,如果記錄不以MySQL數據庫存在

$sql = "CREATE TABLE IF NOT EXISTS Articls 
     (
      id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,  
      name VARCHAR(254) COLLATE utf8_persian_ci NOT NULL,     
      alias INT(10) UNSIGNED NOT NULL,         # alias name for url 
      title VARCHAR(254) NOT NULL COLLATE utf8_persian_ci NOT NULL, 
      UNIQUE (alias) 
     ) DEFAULT COLLATE utf8_persian_ci"; 

所以我想插入新記錄到數據庫,如果alias不存在該表或更新表,如果以前別名已經存在。

我試過沒有成功。

$sqlname = "name,alias,title"; 

$sqlValue = "'".$node['name']."','".$node['alias']."','".$node['title']."'"; 

$sql = "INSERT INTO Articls (".$sqlname.") 
        VALUES (".$sqlValue.") 
     ON DUPLICATE KEY UPDATE 
      (".$sqlname.") VALUES (".$sqlValue.")"; 

我也試過這個代碼沒有成功......它只是創建了一個新的記錄,並且不更新:

$sql = "INSERT INTO Articls (".$sqlname.") 
        VALUES (".$sqlValue.") 

      ON DUPLICATE KEY UPDATE title = 'test',alias = '".$node['alias']."'"; 

回答

0

的synthax:

ON DUPLICATE KEY UPDATE 
     (".$sqlname.") VALUES (".$sqlValue.")"; 

不正確。
使用:

ON DUPLICATE KEY UPDATE <fieldname> = <fieldvalue>, <fieldname> = <fieldvalue>... 
+0

謝謝。但它不起作用。請檢查我的編輯。 –

+0

「不起作用」意味着什麼:報告錯誤情況,而不是 – fantaghirocco

+0

...並且在插入或更新字符串時總是使用'mysql_real_escape_string' – fantaghirocco

相關問題