PHP更新表

PHP更新表,php,mysql,Php,Mysql,我正在创建一个用于基本PHP学习目的的虚拟应用程序,现在我的应用程序将用户登录到一个帐户中,用户可以在该帐户中执行多项操作,例如搜索产品等。用户可以执行的功能之一是编辑帐户详细信息,这就是我遇到的所有问题。没有显示错误,但当我通过单击“编辑帐户”按钮提交查询时,一切都正常工作,但当我检查数据库时,我发现没有任何更改 我也知道代码的安全问题,但我想建立基本的功能 userEditAccount.php: <?php session_start(); include('conn

我正在创建一个用于基本PHP学习目的的虚拟应用程序,现在我的应用程序将用户登录到一个帐户中,用户可以在该帐户中执行多项操作,例如搜索产品等。用户可以执行的功能之一是编辑帐户详细信息,这就是我遇到的所有问题。没有显示错误,但当我通过单击“编辑帐户”按钮提交查询时,一切都正常工作,但当我检查数据库时,我发现没有任何更改

我也知道代码的安全问题,但我想建立基本的功能

userEditAccount.php:

<?php


session_start();


    include('connect_mysql.php');



        if(isset($_POST['Edit Account']))
        {

            $usernameNew = stripslashes(mysql_real_escape_string($_POST["username"]));
            $passwordNew = stripslashes(mysql_real_escape_string($_POST["password"]));
            $first_nameNew = stripslashes(mysql_real_escape_string($_POST["first_name"]));
            $last_nameNew = stripslashes(mysql_real_escape_string($_POST["last_name"]));
            $emailNew = stripslashes(mysql_real_escape_string($_POST["email"]));



            $dbusername = $_SESSION['username'];
            $editQuery = mysql_query("UPDATE users SET user_id='NULL' username='$usernameNew', password='$passwordNew', first_name='$first_nameNew', last_name='$last_nameNew' , email='$emailNew' WHERE username='$edit'");


            if(!$editQuery)
            {
                echo mysql_error($editQuery);
                die($editQuery);
            }
        }

?>


<html>
<head>

<title>Edit Account</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link href="style.css" rel="stylesheet" type="text/css" />

</head>
<body>
<div id="wrapper">
<header><h1>E-Shop</h1></header>

    <article>
        <h1>Welcome</h1>
            <h1>Edit Account</h1>

<div id="login">
    <ul id="login">
    <form method="post" name="editAccount" action="userEditAccount.php"  >
        <fieldset>  
            <legend>Fill in the form</legend>
                <label>Select Username : <input type="text" name="username" /></label>
                <label>Password : <input type="password" name="password" /></label>
                <label>Enter First Name : <input type="text" name="first_name" /></label>
                <label>Enter Last Name : <input type="text" name="last_name" /></label>
                <label>Enter E-mail Address: <input type="text" name="email" /></label>
        </fieldset>
        <br />


                <input type="submit" value="Edit Account" class="button">



    </form>

</div>
    <form action="userhome.php" method="post">
    <div id="login">
        <ul id="login">
            <li>
                <input type="submit" value="back" onclick="index.php" class="button">   
            </li>
        </ul>
    </div>      
</article>

<aside>
</aside>

<div id="footer">Text</div>
</div>

</body>
</html>

这很简单。您使用
if(设置($\u POST['Edit Account'])
,但您的提交按钮没有名称:

将输入更改为:

并将
if(isset($\u POST['Edit\u Account'))
更改为
if(isset($\u POST['Edit\u Account'))

美元Edit在哪里

WHERE username='$edit'
也许您必须使用会话的$dbusername来更改它

霍韦弗:

-如果不推荐使用mysql,请使用mysqli或pdo

-您可以在一条线路中保护所有VAR

foreach($_POST as $key => $var) $_POST[$key] = mysqli_real_escape_string($var);

-在输入变量上添加验证控件和登录会话检查

为什么要转义字符串,然后去掉斜杠?无论如何,你不应该使用mysql扩展。请改用PDO或Mysqli,您的
userEditAccount.php
在哪里?表单正在那里提交,但您没有发布它。如果您只是在学习,请学习将准备好的语句与MySQLi或PDO扩展一起使用,而不是学习不推荐使用的MySQL扩展的错误做法。我强烈建议您处理所有事情
SQL
。我也不知道情况是否如此,因为它正在提交到
userEditAccount.php
,但只发布了
login.php
。很好地发现了thx,我做了更改,但现在在单击按钮后出现了此错误消息注意:未定义索引:C:\xampp\htdocs\eshop\userEditAccount.php中的用户名在第22行,您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在“username='NewUser',password='000',first_name='Newname',last_name='NewLast',第1行使用的正确语法,在此处添加逗号user\u id='NULL',username='$usernamew'此脚本的第22行是$dbusername=$\u SESSION['username'];正如@Sam所说,edit$editQuery=mysql_query(“更新用户设置用户id='NULL'用户名='$usernameNew',密码='$passwordNew',first_name='$first_nameNew',last_name='$last_nameNew',email='$emailNew其中用户名='$edit');到$editQuery=mysql\u查询(“更新用户设置用户id='NULL',用户名='$usernameNew',密码='$passwordNew',first\u name='$first\u nameNew',last\u name='$last\u nameNew',email='$emailNew'其中用户名='$edit');您没有为username设置会话。我用$dbusername变量更改了$edit,但仍然没有任何更改。您使用PDO或mysqli的想法是对的,但是如果我没有首先获得基本功能,那么就没有必要让代码安全地更改name=“Edit\u Account”中的这个值=“Edit Account”正如MIIB所写,我已经这样做了,现在我得到了以下错误:注意:未定义的索引:C:\xampp\htdocs\eshop\userEditAccount.php中的用户名在第22行,您的SQL语法有一个错误;检查与MySQL服务器版本对应的手册,以了解第1行“username='1111',password='1111',first_name='1111',last_name='1111',email='1'附近使用的正确语法
foreach($_POST as $key => $var) $_POST[$key] = mysqli_real_escape_string($var);