繁体   English   中英

PHP中的当前登录用户记录更新错误

[英]curreent login user record updation Error In PHP

我希望当登录用户希望他们可以更改他们的记录(地址等)时。 为此,我为当前登录用户制作了一个自动填充表单。现在的问题是数据不会被更新..

我的表格代码是......

<?php session_start();
include 'conn.php';
include '../includes/layouts/header.php';
if(!isset($_SESSION['user']))
{
    header("location:signin.php");
}
$sql="SELECT * FROM signup";
$qry=mysql_query($sql);
$rows=mysql_fetch_array($qry);
?>

    <div id="main">
        <div id="navigation">
        &nbsp;
        </div>
        <div id="page">
            <h2>Login Section</h2>
            <p>Welcome to LMS</p>

            <form method="post" action="update.php">
                <div class="reg_section">
                    <h3>Your Personal Information</h3>

                    <input type="text" name="fname" value="<?php echo $rows[1];?>" placeholder="First Name"><br>
                    <input type="text" name="lname" value="<?php echo $rows[2];?>" placeholder="Last Name"><br>
                    <input type="text" name="uname" value="<?php echo $rows[3];?>" placeholder="Desired Username"><br>
                    <input type="text" name="email" value="<?php echo $rows[4];?>" placeholder="Email"><br>
                    <input type="text" name="department" value="<?php echo $rows[5];?>" placeholder="Department"><br>
                    <input type="text" name="id" value="<?php echo $rows[6];?>" placeholder="Id #"/><br>
                    <input type="text" name="phone" value="<?php echo $rows[7];?>" placeholder="Phone #"/><br>

                </div>
                <div class="reg_section">
                    <h3>Your Password</h3>
                    <input type="password" name="pass" value="<?php echo $rows[8];?>" placeholder="Your Password"><br>
                    <input type="password" name="cpass" value="<?php echo $rows[8];?>" placeholder="Confirm Password">
                </div>
                <div class="reg_section">
                    <h3>Your Address</h3>
                    <input type="text" name="address" value="<?php echo $rows[9];?>" placeholder="Address">
                </div>
                <p class="submit"><input type="submit" name="submit" value="Update Info"></p>

            </form>

        </div>
    </div>

我的 PHP 代码是......

<?php session_start();

if(isset($_POST['submit']))
{
    $fname=$_POST['fname'];
    $lname=$_POST['lname'];
    $user=$_POST['uname'];
    $email=$_POST['email'];
    $depart=$_POST['department'];
    $id=$_POST['id'];
    $phone=$_POST['phone'];
    $pass=$_POST['pass'];
    $address=$_POST['address'];

    $qry="UPDATE  signup SET First_Name=$$fname,Last_Name=$$lname,Username=$$user,Email=$$email,Department=$$depart,Employe_Id=$$id,Phone=$$phone,Password=$$pass,Address=$$address WHERE Username=$$user";

    if(mysql_query($qry))
    {

        header('location:setting.php');
    }
}
?>

任何人都可以知道这是什么错误...

正如我在上面的第一条评论中提到的,您在构建查询的方式方面存在问题。 您使用的是没有任何意义的美元字符 ( $$ )。 结果是您运行了一个空查询,该查询解释了为什么不更新记录。

作为第一步,改变你的查询是这样的:

$qry = "UPDATE signup SET 
         First_Name='$fname', Last_Name='$lname', Username='$user', 
         Email='$email', Department='$depart', Employe_Id='$id', 
         Phone='$phone', Password='$pass', Address='$address' 
        WHERE Username='$user'";

您没有实现任何形式的错误处理,这就是为什么您看不到从 mysql 得到的错误的原因。 请查看一些有关如何执行此操作的教程。

还要考虑我关于防止 sql 注入的第二条评论。 至少,作为某种“热修复”,您应该对集成到查询中的所有用户输入使用mysql_real_ecape() 但如前所述,唯一真正的解决方案是切换到“准备好的陈述”。

试试这个 sql

$qry="UPDATE  signup 
      SET First_Name='$fname', Last_Name='$lname', Username='$user', Email='$email',Department='$depart', Employe_Id='$id', Phone='$phone', Password='$pass', Address='$address' 
      WHERE Username='$user' LIMIT 1 ";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM