简体   繁体   English

如果MySQL DB中不存在记录,则更新

[英]Update if record doesn't exist in MySQL DB

This is my table: (the unique main key is alias ) 这是我的表:(唯一的主键是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";

So I want to insert a new record to the DB if alias does not exist in the table or update the table if the alias already existed before. 因此,如果表中不存在alias ,我想向DB插入新记录,或者如果别名之前已经存在,则更新表。

I tried this without success. 我没试这么成功。

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

I also tried this code with no success... It just creates a new record and doesn't update: 我也试过这个代码没有成功......它只是创建一个新记录而不会更新:

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

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

The synthax: 合成器:

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

is not correct. 是不正确的。
Use: 采用:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM