我正在尝试在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'附近使用
任何帮助将深表感谢
答案 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分配给该行,而不是相反。
我看不见,我的不好。很好。