如果MySQL DB中没有记录,则更新

时间:2015-05-20 08:10:49

标签: php mysql

这是我的表:(唯一的主键是alias

$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']."'";

1 个答案:

答案 0 :(得分:0)

synthax:

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

不正确。
使用:

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