Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何插入数据库中的特定行?_Php_Mysql_User Input - Fatal编程技术网

Php 如何插入数据库中的特定行?

Php 如何插入数据库中的特定行?,php,mysql,user-input,Php,Mysql,User Input,好的,我的数据库如下: id(主-自动增量)、用户名(唯一)、密码、fname、邮件 我有它,以便用户注册用户名和密码,并将其添加到数据库中,首先。没有用户名可以是相同的,当它将数据添加到数据库时,它会自动增加ID。所有这些都可以,但现在我制作了一个帐户设置页面,用户可以在其中更改他们的电子邮件和名字,但它不起作用。我让用户在一个页面的表单中输入变量,然后它将它们的名字发布为ufname(更新名字)和umail(更新邮件)。在更新数据库的下一页,我有以下代码: session_start();

好的,我的数据库如下:

id(主-自动增量)、用户名(唯一)、密码、fname、邮件

我有它,以便用户注册用户名和密码,并将其添加到数据库中,首先。没有用户名可以是相同的,当它将数据添加到数据库时,它会自动增加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;

}
session_start();
if(!isset($\u会话['userId'])){
死亡(“您未登录。请登录。”);
}否则{
$changeTXT=$_会话['username'];
$changeTXT=strtolower($changeTXT);
$changeTXT=ucfirst($changeTXT);
回显“帐户设置:”.$CHANGETTXT。“

”; $ufname=$_POST['ufname']; $umail=$_POST['umail']; mysql_connect(“localhost”、“root”、“sp1511”)或die(mysql_error()); mysql_选择_db(“usersys”)或die(mysql_error()); mysql_查询(“插入userdb(id、用户名、密码、fname、邮件)值(“”、“”、“”、$ufname’、“$umail”); echo$umail.“

”; echo$ufname; }
哦,我也有用户登录会话


但是,如何将用户输入的名字和电子邮件插入到数据库中的特定行中呢?我的数据库名是userdb。

您考虑过使用SQL
更新查询吗?

您需要运行更新查询来更改现有行,而不是插入

$sql = "UPDATE userdb SET fname = '$ufname', mail = '$umail' WHERE id = $id";
mysql_query($sql);
试试这个:

mysql_query("UPDATE userdb SET fname = '$ufname', umail = '$umail' WHERE id = '$_SESSION['userId']' ");

尝试此
更新
查询:

Update 'tableName' set 'columnName' = 'newEntry' where 'rowID' = 'value'.

您需要使用和
UPDATE
语句,而不是
INSERT

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

你应该认真考虑使用带有查询参数的准备语句来防止SQL注入ATACS。

不,我对这一切都很陌生。我真的在尽我所能地学习它。:)我该怎么做呢?请将其参数化以防止SQL注入;使用mysql\u real\u escape\u字符串或准备好的语句来防止SQL注入!为什么要投反对票?其他答案是使用$id,这不是正确的变量,因为他将id存储在$_SESSION['userId')。告诉我你没有在这篇博文中透露你的mysql用户名和密码,这只是在本地pc xD上的测试。否则我就不会了。