在公共功能php的DUPLICATE KEY UPDATE无效

时间:2013-12-07 21:15:12

标签: php mysql on-duplicate-key

我是php的新手,并且正在开发一个pdo crud类。我的插入函数本身可以工作,但我试图为插入和更新都有一个函数。我研究并发现你可以使用ON DUPLICATE KEY UPDATE来做到这一点,但当我把它添加到我的函数时它不起作用。

这是我的原始INSERT有效;

//INSERT
public function insert($product_name,$color,$description,$used_for){
    $query="INSERT INTO makeup SET product_name='$product_name', color='$color', description='$description', used_for='$used_for'";
    $result= $this->mysqli->query($query) or die(mysqli_connect_errno()."product cannot inserted");

    if($result){
        header('location:read.php');    
    }
}

并且这里添加了ON DUPLICATE KEY UPDATE(不工作)没有错误消息,项目根本不更新或插入

//INSERT and UPDATE
public function insert($product_name,$color,$description,$used_for){
    $query="INSERT INTO makeup SET product_name='$product_name', color='$color', description='$description', used_for='$used_for'
    ON DUPLICATE KEY UPDATE makeup SET product_name='$product_name', color='$color', description='$description', used_for='$used_for'";
    $result= $this->mysqli->query($query) or die(mysqli_connect_errno()."product cannot inserted");

    if($result){
        header('location:read.php');    
    }
}

并使用以下方式调用:

include('Crud_class.php');
if(isset($_REQUEST['submit'])){
    $obj=new Crud("localhost","root","password","dbname");
extract($_REQUEST);
$obj->insert($product_name,$color,$description,$used_for);

}

1 个答案:

答案 0 :(得分:1)

存在语法错误。没有ON DUPLICATE KEY UPDATE tablename SET 而是使用

INSERT INTO makeup SET product_name='$product_name', color='$color', description='$description', used_for='$used_for'
    ON DUPLICATE KEY UPDATE product_name='$product_name', color='$color', description='$description', used_for='$used_for'