2011-02-10 58 views
0

我的计划是从外部更新/插入现有的/新的记录到数据库中,我有信息设置进入数据库,但不能检查是否它已经存在。PHP和MYSQL这是MySQL的语法正确的更新/插入如果存在

我第一次尝试在做数据库的东西

$link = resdb::connect(); 
    $q = "IF (EXISTS (SELECT * FROM property AS this WHERE this.name = $propertyname))" 
     ."begin" 
      // UPDATE PROPERTY IF IT EXISTS 
      ."UPDATE property (name, propertylocation, propertyrating, propertytype)" 
      ."SET ($propertyname, $locationid, $ratingid, $typeid)"   
      ."WHERE name = $propertyname" 
     ."end" 
     ."ELSE" 
     ."begin" 
      ."INSERT INTO property (name, propertylocation, propertyrating, propertytype)" 
      ."VALUES ($propertyname, $locationid, $ratingid, $typeid)" 
     ."end"; 
    $r = mysqli_query($link, $q); 
    if($r > 0){ 
     return true; 
    } 

唯一ID为每一行的帮助完成。

回答

2

首先创建的名称列的唯一索引:

ALTER TABLE property ADD UNIQUE KEY(name) 

现在你可以使用MySQL INSERT ... ON DUPLICATE KEY UPDATE...

INSERT property (name, propertylocation, propertyrating, propertytype) 
VALUES ($propertyname, $locationid, $ratingid, $typeid) 
ON DUPLICATE KEY UPDATE 
    propertylocation = VALUES(propertylocation), 
    propertyrating = VALUES(propertyrating), 
    propertytype = VALUES(propertytype) 

文档:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

不要忘了清理数据库输入。

+0

比TSQL方法容易得多。 upvote并回答。谢谢 – goingsideways 2011-02-10 05:35:50