PHP PDO简单的插入或更新功能

Rob*_*ght 6 php pdo insert-update

在尝试创建一个简单的PHP PDO更新函数时,如果找不到该字段会插入它,我创建了这个小片段.

function updateorcreate($table,$name,$value){
    global $sodb;
    $pro = $sodb->prepare("UPDATE `$table` SET value = :value WHERE field = :name");
    if(!$pro){
        $pro = $sodb->prepare("INSERT INTO `$table` (field,value) VALUES (:name,:value)");
    }
    $pro->execute(array(':name'=>$name,':value'=>$value));
}
Run Code Online (Sandbox Code Playgroud)

它不检测更新功能是否可以使用if(!$pro);我们如何使这个工作.

Flu*_*feh 15

您正在分配$pro准备,而不是执行语句.

话虽如此,如果你使用的是mysql,你可以使用insert... on duplicate key update语法.

insert into $table (field, value) values (:name, :value) on duplicate key update value=:value2
Run Code Online (Sandbox Code Playgroud)

您不能两次使用相同的绑定参数,但可以将两个绑定参数设置为相同的值.

编辑:此mysql语法适用于存在密钥(主要或另一个唯一)并导致插入失败的情况.