MySQL UPDATE,IF,INSERT INTO语句

时间:2017-10-24 08:23:00

标签: mysql

我正在尝试遵循以下blog并使用UPDATE,IF,INSERT INTO语句,看到它不会超过我的数据两次。

请注意它适用于php。

我的陈述如下

$query = "UPDATE 
            " . $this->table_name2 . "
        SET  
            batch = :batch, 
            created = :created
        WHERE 
            id = :id
        IF row_count() = 0 
        INSERT INTO " . $this->table_name2 . "
        SET 
            id=:id, 
            batch=:batch, 
            created=:created";

但是我的返回值总是回归假,我不知道问题出在哪里。

如果我尝试声明的前半部分,它会更新信息:

$query = "UPDATE 
            " . $this->table_name2 . "
        SET  
            batch = :batch, 
            created = :created
        WHERE 
            id = :id

如果我尝试声明的后半部分,它会记录信息:

        INSERT INTO " . $this->table_name2 . "
        SET 
            id=:id, 
            batch=:batch, 
            created=:created";

到目前为止,我在找到任何搜索后都没有找到任何帮助,我觉得我的IF语句可能不正确,但我甚至没有得到关于文档中IF row_count() = 0的信息。

1 个答案:

答案 0 :(得分:1)

IF语句仅在存储过程中可用。

如果id是主键(或唯一),那么这对您有用:

INSERT INTO " . $this->table_name2 . "
       SET
            id = :id, 
            batch = :batch, 
            created = :created
ON DUPLICATE KEY UPDATE
            batch = :batch, 
            created = :created

这将仅执行INSERT语句,ID尚未退出。如果它已经存在,它将执行UPDATE部分。

相关问题