5

さて、私のデータベースはこの順序で次のとおりです。

id (プライマリ - auto_increment)、ユーザー名 (一意)、パスワード、fname、メール

まず、ユーザーがユーザー名とパスワードを登録し、それをデータベースに追加するようにしています。同じユーザー名はありません。データがデータベースに追加されると、ID が自動的にインクリメントされます。すべてが機能しますが、ユーザーが電子メールと名前を変更できるアカウント設定ページを作成しましたが、機能しません。ユーザーに 1 つのページのフォームに変数を入力させると、名前が ufname (更新名の場合) および umail (更新メールの場合) として投稿されます。次に、データベースを更新する次のページに、次のコードがあります。

session_start();
if(!isset($_SESSION['userId'])) {
die("&nbsp;You are not signed in. Please <a href='login.php'>click here</a> to sign in.");
} else {
$changeTXT = $_SESSION['username'];
$changeTXT = strtolower($changeTXT);
$changeTXT = ucfirst($changeTXT);
echo "Account Settings: <font color='red'>" . $changeTXT . "</font><br /><br />";

$ufname = $_POST['ufname'];
$umail = $_POST['umail'];

mysql_connect("localhost", "root", "sp1151") or die(mysql_error());


mysql_select_db("usersys") or die(mysql_error());

mysql_query("INSERT INTO userdb (id, username, password, fname, mail) VALUES('','','','$ufname', '$umail') ");


echo $umail . "<br /><br />";
echo $ufname;

}

ああ、ユーザーもセッションにログインしています。

しかし、ユーザーが入力した名と電子メール アドレスをデータベースの特定の行に挿入するにはどうすればよいでしょうか。私のデータベース名は userdb です。

4

5 に答える 5

17

INSERT ではなく既存の行を変更するには、UPDATE クエリを実行する必要があります。

$sql = "UPDATE userdb SET fname = '$ufname', mail = '$umail' WHERE id = $id";
mysql_query($sql);
于 2009-03-27T14:14:29.507 に答える
8

UPDATEの代わりに use and ステートメントを実行する必要がありますINSERT

UPDATE userdb SET fname = ?, mail = ? WHERE username = ?;

それはさておき、SQL インジェクション攻撃を防ぐために、準備済みステートメントをクエリ パラメーターと共に使用することを真剣に検討する必要があります。

于 2009-03-27T14:16:50.610 に答える
1

このUPDATEクエリを試してください:

Update 'tableName' set 'columnName' = 'newEntry' where 'rowID' = 'value'.
于 2009-03-27T14:16:47.957 に答える
0

SQLUPDATEクエリの使用を検討しましたか?

于 2009-03-27T14:13:40.417 に答える
0

これを試して:

mysql_query("UPDATE userdb SET fname = '$ufname', umail = '$umail' WHERE id = '$_SESSION['userId']' ");
于 2009-03-27T14:16:04.793 に答える