区分更新和插入查询

时间:2012-11-27 10:11:18

标签: php mysql sql

我有一个包含3列的页面,前两列有表格,而第三列显示信息。

每当调用页面时,与第一个表单相对应的信息将会存在,但第二个表单可用于插入新数据或更新现有数据。

我现在的代码:

<?php
require_once 'connect.php';
$formType = $_POST['formType'];
$id = $_POST['id'];
$favColor= $_POST['favColor'];
$favFood= $_POST['favFood'];
$country = $_POST['country'];

if($_POST['formType'] == 'guestCosts'){
$sth = $dbh->prepare("INSERT INTO info (id, favColor, favFood, country)
VALUES ('$id', '$favColor', '$favFood', '$country')");
$sth->execute();

}elseif($_POST['formType'] == 'guestCosts'){
$sth = $dbh->prepare("UPDATE info SET favColor = '$favColor', favFood = '$favFood', country = '$country' WHERE id = '$id'");
$sth->execute();
}
$dbh =null;
?>

我遇到的问题是我现在看到区分何时应该进行UPDATE以及何时进行INSERT。

生成表单的页面会执行查询,以使用数据库中的值填充表单。如果数据库对于特定的id为空,我想添加一个隐藏字段,例如:

<input type = "hidden" name ="action" value="insert" />

但是我不确定在页面之间传递变量是最有效的方法。有没有更好的方法来做我想做的事情?

1 个答案:

答案 0 :(得分:1)

看看MySQL INSERT ON DUPLICATE KEY UPDATE

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html