0

3 列のページがあります。最初の 2 列にはフォームがあり、3 番目には情報が表示されます。

ページが呼び出されるたびに、最初のフォームに対応する情報が既に存在しますが、2 番目のフォームを使用して新しいデータを挿入したり、既存のものを更新したりできます。

私が現時点で持っているコード:

<?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" />

ただし、ページ間で変数を渡すことが最も効率的な方法かどうかはわかりません。私がやろうとしていることを行うためのより良い方法はありますか?

4

1 に答える 1

1

MySQL INSERT ON DUPLICATE KEY UPDATE を見てください。

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

于 2012-11-27T10:17:55.780 に答える