【问题标题】:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册
【发布时间】:2019-01-11 15:31:08
【问题描述】:

我正在尝试更新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”作为错误,对吧?编辑:呵呵,知道了 ;-)
  • 了解prepared statements以防止sql注入
  • 顺便说一句,您在这里让自己面临严重的 SQL 注入。使用准备好的语句。
  • 其实我是用程序化的方法,这个用prepare statment可以吗

标签: php mysql sql


【解决方案1】:

(见底部附近的编辑)。

这里发生的情况是,您为 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 将被分配给该行,而不是相反。

我没看到,我的错。很好理解。

【讨论】:

  • 谢谢,错误消失了,但是记录没有更新
  • @ScofLj 欢迎。看看mysqli_error($con); 显示的内容。如果它没有抛出错误,那么您的查询可能会静默失败。一个可能的原因是错误的数据类型,或者列长度太短。也可能有其他因素。
  • 它'不更新'很可能是因为他正在做:$row['id']=$id; ... 而不是$id=$row['id'];
  • @IncredibleHat 哦,伙计,好球!!!!哇,这完全逃脱了我lol!如果你不介意的话,我会把它添加到答案中:-)
  • @IncredibleHat 实际上,你帮了大忙,真的;不要低估自己 :-) 我很高兴你介入,因为我可能没有抓住这一点。
猜你喜欢
  • 1970-01-01
  • 2018-11-28
  • 1970-01-01
  • 2019-08-06
  • 2017-06-30
  • 2018-11-09
  • 1970-01-01
  • 2014-01-27
相关资源
最近更新 更多