我有一个包含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" />
但是我不确定在页面之间传递变量是最有效的方法。有没有更好的方法来做我想做的事情?
答案 0 :(得分:1)
看看MySQL INSERT ON DUPLICATE KEY UPDATE
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html