更新记录时出错

时间:2016-04-01 05:15:30

标签: php mysql sql

所需的输出正在更新特定用户。问题显示此错误

  

更新记录时出错:您的SQL语法出错;检查与您的MariaDB服务器版本对应的手册,以便在'group =''附近使用正确的语法,在第8行查看WHERE id ='。

我试图回应查询,看看编码是否有问题,但没有显示任何错误。但是,当我尝试更新它时显示错误。代码有问题吗?谢谢。

require_once 'init.php';
include('db.php');
 $id=mysql_real_escape_string($_POST["id"]);
  $password1=mysql_real_escape_string($_POST["password"]);
  $username = mysql_real_escape_string($_POST['username']);
  $name = mysql_real_escape_string($_POST['name']);
  $group = $_POST['group'];
  $phone = mysql_real_escape_string($_POST['phone']);
  $email = mysql_real_escape_string($_POST['email']);



 if($password1 == ''){
     $user = new User($id);
    $password =  $user->data()->password;
    $salt = $user->data()->salt;

} else {
    $salt = Hash::salt(32);
$password = Hash::make($password1, $salt);

}   

        $sql = " UPDATE users
                SET
                username = '$username',
                password = '$password',
                salt = '$salt',
                name = '$name',
                email = '$email',
                group = '$group',
                phone = '$phone'
                 WHERE id = $id";

            if(mysqli_query($conn, $sql)){
                echo  "<script>alert('User has been Updated')</script>";
                echo "<script>window.open ('adduser.php','_self')</script>";

                } else {
                    echo "<br>Error updating record: " . mysqli_error($conn);

                echo  "<script>alert('User hasn't been Updated')</script>";


                } 

2 个答案:

答案 0 :(得分:0)

我抛出了同样的问题。我犯了错误。

  1. 表名不正确。
  2. 我没有在查询中插入逗号。
  3. 请参阅并预测:

    $sql = "UPDATE Auc_AreaSelection SET Country='$country',State='$state',District='$district',City='$city' WHERE Email='$email'";
    

答案 1 :(得分:0)

1)作为referenced by Saty; groupa reserved keyword in MySQL,并且在用作文字时必须在反引号中引用。

我的建议是将列的名称更改为其他内容,例如user_group

2)不要mysql_mysqli_功能混合使用。它们不兼容。 仅使用mysqli_

3)您应该考虑使用Prepared Statements进行SQL查询。它可以为您节省许多担心,安全问题(正确部署时)和代码行。

4)不要滚动自己的盐密码。 Why not?你应该使用PHP password_hash机制而不是自己动手。这可以追溯到PHP 5.3(带a userland fix)。

5)如果您的PHP版本不够高,无法使用MySQLi或password_hash,那么您必须升级