我正在尝试更新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'附近使用正确的语法


任何帮助将不胜感激

最佳答案

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

这里发生的是,您对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注入。


https://en.wikipedia.org/wiki/Prepared_statement(常规信息)。
http://php.net/manual/en/mysqli.prepare.php(MySQLi_)。
http://php.net/manual/en/pdo.prepared-statements.php(PDO)。




根据添加的your edit


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


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

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

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



编辑:

IncredibleHat的注释所述,此行:

$row['id']=$id;


相反,应写为:

$id = $row['id'];


id将被分配给该行,而不是相反。

我没看到,我的坏。很好抓住这一点。

关于php - 您的SQL语法有误;检查与您的MariaDB服务器版本相对应的手册,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51677698/

10-13 04:52