我正在尝试更新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/