5

好的,所以我的数据库按这个顺序如下:

id (primary - auto_increment), username (unique), password, fname, mail

我有它,以便用户注册用户名和密码,并将其添加到数据库中,首先。没有用户名可以相同,并且当它确实将数据添加到数据库时,它会自动增加 ID。所有这些都有效,但现在我创建了一个帐户设置页面,用户可以在其中更改他们的电子邮件和名字,但它不起作用。我让用户在一个页面上的表单中输入变量,并将他们的名字发布为 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

您需要运行 UPDATE 查询来更改现有行,而不是 INSERT。

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

您需要使用和UPDATE声明而不是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 回答