为什么这将不执行代码以给出成功消息?

时间:2019-06-17 23:52:50

标签: php mysqli

我有一个用于更新数据的表格,包括姓名,电子邮件和年龄,我单击“更新用户”按钮,我将收到错误消息,请填写必填字段。

我尝试编写sql语句的方法可能包括检查表名。

{
<?php

$sql = "UPDATE u_data SET Email = '$Email' , Name = ''$Name' , Age = '$Age' WHERE Id = '$Id'";      
if(mysqli_query($conn , $sql))
{
    if(!empty($Email) || !empty($Name) || !empty($Age))
    {
        $Success = "User has been Updated Successfully!";
        header("Location: Updating_U.php?Success=" . urlencode($Success));
        exit();
    }   
}
?>
}

当我填写所有表单字段时,将显示一条消息,提示用户已成功更新!但是相反,我总是收到一条错误消息,请填写必填字段。我不知道为什么数据库行不会用新数据更新。

1 个答案:

答案 0 :(得分:0)

首先,您的代码高度容易受到PHP注入的攻击。更多信息here

您在SQL查询字符串中也有错字。

<?php
//You had a typo in this line! An extra quote
$sql = "UPDATE u_data SET Email = '$Email' , Name = '$Name' , Age = '$Age' WHERE Id = '$Id'";      

if(!empty($Email) || !empty($Name) || !empty($Age)) {
    if(mysqli_query($conn , $sql)) {
        $Success = "User has been Updated Successfully!";
        header("Location: Updating_U.php?Success=".urlencode($Success));
        exit();
    }   
}
?>

此外,您应该在执行查询之前进行验证。