Php 更新SQL表中的数据

Php 更新SQL表中的数据,php,html,mysql,Php,Html,Mysql,我已经创建了一个网页,让用户登录,如果他们没有帐户,那么他们可以注册,并为他们创建一个新的用户 这是数据库中的用户表(用户注册) 当新用户注册时,工资的默认值为0。我希望他们能够通过使用表单对其进行编辑-这是表单的HTML代码:- 您容易受到攻击 另外,您似乎没有调用session\u start(),因此$\u session可能为空,导致$user\u id为空,并且您的查询与任何内容都不匹配。一个简单的var\u dump($query)将向您展示那里的实际情况 您还需要检查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受影响的行(),查看是否有任何内容得到了更新。

根据您在评论中所说的:

这:

应该是这样的:

$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'";
这可以防止人们输入特殊字符(如引号)进行攻击