我的计划是从外部更新/插入现有/新记录到数据库中,我已设置要进入数据库的信息,但无法检查它是否已经存在。
我第一次尝试做数据库的事情
$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。
最佳答案
首先在名称列上创建唯一索引:
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
不要忘记清理数据库输入。
关于PHP 和 MYSQL 对于 UPDATE/INSERT IF EXISTS,此 MySQL 语法是否正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4953700/