如果存在如何更新,否则插入php?

时间:2014-12-12 08:49:49

标签: php sql

我想检查数据是否存在。如果存在数据,请更新名为" user_star_rate"的表,否则将数据插入表中。插入工作正常,但更新无效。

这是我的代码。

$jsqla7 = mysql_query("select * from user_star_rate where product_id='$product_id' and email='$visit_email'") or die(mysql_error());
$jfeta7 = mysql_fetch_assoc($jsqla7);

if($jfeta7 != null) {
   $rate = "UPDATE user_star_rate SET rate_value='$rate_value' WHERE product_id='$product_id' and email='$visit_email'" ;
} else {
   $rate = "INSERT INTO user_star_rate (email, product_id, rate_value) VALUES ('$visit_email','$product_id','$rate_value')" ;
}

3 个答案:

答案 0 :(得分:1)

试试这个:

$tot = mysql_num_rows($jfeta7);
if($tot > 0){
   $rate = "UPDATE user_star_rate SET rate_value='$rate_value' WHERE product_id='$product_id' and email='$visit_email'" ;
} else {
   $rate = "INSERT INTO user_star_rate (email, product_id, rate_value) VALUES ('$visit_email','$product_id','$rate_value')" ;
}

答案 1 :(得分:1)

如果我理解你的意思,你应该使用replace into,这也会大大减少你的代码。

您的代码将变为:

$query = "REPLACE INTO user_star_rate(product_id, email) VALUES('$product_id', '$visit_email')";
mysql_query($query) or die(mysql_error());

如果它已经存在,那么它将更新它,否则它将插入它。您应该特别注意有关外键和自动递增ID的文档。

答案 2 :(得分:1)

尝试:

     $jsqla7 = mysql_query("select count(*) from user_star_rate where product_id='$product_id' and email='$visit_email'") or die(mysql_error());
        $count = mysql_num_rows();

        if($count) {
 $rate = "UPDATE user_star_rate SET rate_value='$rate_value' WHERE product_id='$product_id' and email='$visit_email'" ;


        } else {
           $rate = "INSERT INTO user_star_rate (email, product_id, rate_value) VALUES ('$visit_email','$product_id','$rate_value')" ;
        }