尝试更新时PHP的重复输入错误

时间:2014-07-24 04:38:04

标签: mysql php phpmyadmin

我正在检查是否存在记录,如果该记录尚不存在则创建新记录,否则更新。 SQL在PHPMyAdmin中工作正常,但不能通过PHP页面。

$check_for_id = mysql_query("SELECT id FROM Members WHERE ID = '$id'");
if(mysql_num_rows($check_for_id) == 0) {
     // Not found, add a new record
     $sql="INSERT INTO Members (ID, Title, FirstName, LastName) VALUES ('$id', '$title', '$firstname', '$lastname')";
     $response=" Record Added";
} else {
    // Member is already in the database, so let's just update the info
    $sql="UPDATE Members 
            SET ID='$id', Title='$title', FirstName='$firstname', LastName='$lastname' 
            WHERE ID='$id'";
    $response=" Record Updated";
}


if (!mysqli_query($dbconnect,$sql)) {
  die('Error: ' . mysqli_error($dbconnect));
}
echo mysqli_affected_rows($dbconnect) . $response;

1 个答案:

答案 0 :(得分:2)

MySQL有一种名为INSERT ... ON DUPLICATE KEY UPDATE的语法,它完全符合您的要求,只需1个查询而不是3个。还有REPLACE,虽然略有不同(REPLACE是{ {1}}或INSERTDELETE + INSERTINSERT ODKUINSERT,如果您有auto_increment,结果可能略有不同)。它将以事务方式完成,与您的代码不同。它还假定id是主键或唯一键。