您的SQL语法有误;检查与您的MariaDB服务器版本相对应的手册

时间:2018-08-03 17:44:33

标签: php mysql sql

我正在尝试在mysql中更新一行,但是每次都不会出现错误1024。

@$name= $_POST['name'];
@$bio=$_POST['bio'];
    @$email=$_POST['email'];

if(!empty($_POST['name']) && !empty($_POST['bio']) && !empty($_POST['email']) )
{
     $result="SELECT * FROM accounts where email='$email'";
     $row = mysqli_fetch_array(mysqli_query($con,$result),MYSQLI_ASSOC);

     $row['id']=$id;
     $Sql_Query = mysqli_query($con,"UPDATE profile SET name= '$name', bio = '$bio' WHERE id = '$id'");

if(mysqli_query($con,$Sql_Query)){
 echo 'Record Updated Successfully';
}
else{
echo 'Something went wrong, whether id is not present or something else'.mysqli_error($con);
}
}else
{
    echo 'missing parameters';
}

错误

  

您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第1行的'1'附近使用

任何帮助将深表感谢

1 个答案:

答案 0 :(得分:3)

(请参阅底部附近的修改)。

这里发生的是您对UPDATE执行了两次相同的查询,并且应该得到的错误为“ 1”。 (在edit之前)。

更改您的

$Sql_Query = mysqli_query($con,"UPDATE profile SET name= '$name', bio = '$bio' WHERE id = '$id'");
//           ^^^^^^^^^^^^^^^^^


if(mysqli_query($con,$Sql_Query)){
// ^^^^^^^^^^^^^^^^^
 echo 'Record Updated Successfully';
}

公正

if($Sql_Query){
 echo 'Record Updated Successfully';
}

,并使用准备好的语句来帮助防止SQL注入。


根据您添加的your edit

  

您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第1行的'1'附近使用

...这是我之前怀疑并发布过in a comment的内容。

顺便说一句;这些@字符是错误抑制器,应在开发期间将其删除。

使用PHP's error reporting会在一定程度上有所帮助,但是对于POST数组的@ed变量,如果它们有任何问题,则无济于事。


编辑:

IncredibleHat的注释中所述,此行:

$row['id']=$id;

是相反的,应写为:

$id = $row['id'];

要将ID分配给该行,而不是相反。

我看不见,我的不好。很好。