Php 更新SQL表中的数据
我已经创建了一个网页,让用户登录,如果他们没有帐户,那么他们可以注册,并为他们创建一个新的用户 这是数据库中的用户表(用户注册) 当新用户注册时,工资的默认值为0。我希望他们能够通过使用表单对其进行编辑-这是表单的HTML代码:-Php 更新SQL表中的数据,php,html,mysql,Php,Html,Mysql,我已经创建了一个网页,让用户登录,如果他们没有帐户,那么他们可以注册,并为他们创建一个新的用户 这是数据库中的用户表(用户注册) 当新用户注册时,工资的默认值为0。我希望他们能够通过使用表单对其进行编辑-这是表单的HTML代码:- 您容易受到攻击 另外,您似乎没有调用session\u start(),因此$\u session可能为空,导致$user\u id为空,并且您的查询与任何内容都不匹配。一个简单的var\u dump($query)将向您展示那里的实际情况 您还需要检查mysql受影
您容易受到攻击
另外,您似乎没有调用session\u start()
,因此$\u session
可能为空,导致$user\u id
为空,并且您的查询与任何内容都不匹配。一个简单的var\u dump($query)
将向您展示那里的实际情况
您还需要检查mysql受影响的行()
,以查看是否有任何内容实际得到了更新。您很容易受到影响
另外,您似乎没有调用session\u start()
,因此$\u session
可能为空,导致$user\u id
为空,并且您的查询与任何内容都不匹配。一个简单的var\u dump($query)
将向您展示那里的实际情况
您还需要检查mysql受影响的行(),以查看是否有任何内容实际得到了更新。您很容易受到影响
另外,您似乎没有调用session\u start()
,因此$\u session
可能为空,导致$user\u id
为空,并且您的查询与任何内容都不匹配。一个简单的var\u dump($query)
将向您展示那里的实际情况
您还需要检查mysql受影响的行(),以查看是否有任何内容实际得到了更新。您很容易受到影响
另外,您似乎没有调用session\u start()
,因此$\u session
可能为空,导致$user\u id
为空,并且您的查询与任何内容都不匹配。一个简单的var\u dump($query)
将向您展示那里的实际情况
您还需要检查mysql受影响的行(),查看是否有任何内容得到了更新。根据您在评论中所说的: 这: 应该是这样的:
$user = $_SESSION['MM_Username'];
$wage = $_POST['new-wage'];
$query = "UPDATE users ".
"SET wage = '$wage' ".
"WHERE username = '$user'";
因为您想根据用户id更新记录,但是您将用户名作为参数传入了
但是,我假设您希望通过用户id
进行更新,因为这对于每个用户都是唯一的,因此是一种更健壮的设计
为此,您必须添加另一个$\u SESSION
变量,该变量在用户登录时存储用户id。称之为$\u SESSION['MM\u Id']
或其他任何名称。名称是任意的
代码末尾还有一个未关闭的else
语句:
else
{
?>
要么关闭它,要么移除它
正如Mark所说,您的代码容易受到SQL注入攻击,这是一个经常被滥用的错误。我建议你看看(我个人最喜欢的)。如果您是面向对象编程新手,这可能会很困难,但它提供了更多的功能、灵活性和安全性。另外,无论如何,面向对象编程是一个重要的概念
要防止当前代码被注入,请使用mysql\u real\u escape\u string()
$user = mysql_real_escape_string($_SESSION['MM_Username']);
$wage = mysql_real_escape_string($_POST['new-wage']);
$query = "UPDATE users ".
"SET wage = '$wage' ".
"WHERE username = '$user'";
这可以防止人们输入特殊字符(如引号)来攻击您的查询。我得走了,但如果你读过SQL注入,你会明白的 根据您在评论中所说的:
这:
应该是这样的:
$user = $_SESSION['MM_Username'];
$wage = $_POST['new-wage'];
$query = "UPDATE users ".
"SET wage = '$wage' ".
"WHERE username = '$user'";
因为您想根据用户id更新记录,但是您将用户名作为参数传入了
但是,我假设您希望通过用户id
进行更新,因为这对于每个用户都是唯一的,因此是一种更健壮的设计
为此,您必须添加另一个$\u SESSION
变量,该变量在用户登录时存储用户id。称之为$\u SESSION['MM\u Id']
或其他任何名称。名称是任意的
代码末尾还有一个未关闭的else
语句:
else
{
?>
要么关闭它,要么移除它
正如Mark所说,您的代码容易受到SQL注入攻击,这是一个经常被滥用的错误。我建议你看看(我个人最喜欢的)。如果您是面向对象编程新手,这可能会很困难,但它提供了更多的功能、灵活性和安全性。另外,无论如何,面向对象编程是一个重要的概念
要防止当前代码被注入,请使用mysql\u real\u escape\u string()
$user = mysql_real_escape_string($_SESSION['MM_Username']);
$wage = mysql_real_escape_string($_POST['new-wage']);
$query = "UPDATE users ".
"SET wage = '$wage' ".
"WHERE username = '$user'";
这可以防止人们输入特殊字符(如引号)来攻击您的查询。我得走了,但如果你读过SQL注入,你会明白的 根据您在评论中所说的:
这:
应该是这样的:
$user = $_SESSION['MM_Username'];
$wage = $_POST['new-wage'];
$query = "UPDATE users ".
"SET wage = '$wage' ".
"WHERE username = '$user'";
因为您想根据用户id更新记录,但是您将用户名作为参数传入了
但是,我假设您希望通过用户id
进行更新,因为这对于每个用户都是唯一的,因此是一种更健壮的设计
为此,您必须添加另一个$\u SESSION
变量,该变量在用户登录时存储用户id。称之为$\u SESSION['MM\u Id']
或其他任何名称。名称是任意的
代码末尾还有一个未关闭的else
语句:
else
{
?>
要么关闭它,要么移除它
正如Mark所说,您的代码容易受到SQL注入攻击,这是一个经常被滥用的错误。我建议你看看(我个人最喜欢的)。如果您是面向对象编程新手,这可能会很困难,但它提供了更多的功能、灵活性和安全性。另外,无论如何,面向对象编程是一个重要的概念
要防止当前代码被注入,请使用mysql\u real\u escape\u string()
$user = mysql_real_escape_string($_SESSION['MM_Username']);
$wage = mysql_real_escape_string($_POST['new-wage']);
$query = "UPDATE users ".
"SET wage = '$wage' ".
"WHERE username = '$user'";
这可以防止人们输入特殊字符(如引号)进行攻击