您的SQL语法-PHP中有一个错误

您的SQL语法-PHP中有一个错误,php,mysql,mysqli,Php,Mysql,Mysqli,我正在尝试更新我的表行,但无法成功 这就是即将发生的错误 您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第2行“Current_date='2017-03-30',Content='This is first notification te'附近使用的正确语法 这是我的密码 if(!empty($_FILES) || isset($_FILES['Details_file'])){ $filetmp = $_FILES["Details_file"]["tmp_

我正在尝试更新我的表行,但无法成功

这就是即将发生的错误

您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第2行“Current_date='2017-03-30',Content='This is first notification te'附近使用的正确语法

这是我的密码

if(!empty($_FILES) || isset($_FILES['Details_file'])){
    $filetmp = $_FILES["Details_file"]["tmp_name"];
    $filename = $_FILES["Details_file"]["name"];
    $filetype = $_FILES["Details_file"]["type"];
    $filepath = "notification/".$filename;

    move_uploaded_file($filetmp, $filepath);        

    echo $_POST['post_date'];
    $stmt = $con1->prepare("UPDATE notification SET 
        Current_date = '".$_POST['post_date']."',
        Content = '".$_POST['Content']."',
        File_name= '".$filename."',
        File_path ='".$filepath."',
        Apply_link = '".$_POST['apply_now']."',
        Last_date = '".$_POST['Last_date']."'
        WHERE id = '".$_POST['fetch_id']."'") or die(mysqli_error($con1));

    $stmt->execute(); 
    $stmt->close();     
}

任何人都可以在这里告诉我我的代码有什么问题。

如果你没有,那么
prepare()
execute()
是没有意义的。请尝试以下方法:

$query = "UPDATE notification SET `Current_date`=?, `Content`=?, `File_name`=?, `File_path`=?, `Apply_link`=?, `Last_date`=? WHERE `id`=?";
$stmt = $con1->prepare($query);
$stmt->bind_param("ssssssi", $_POST['post_date'], $_POST['Content'], $filename, $filepath, $_POST['apply_now'], $_POST['Last_date'], $_POST['fetch_id']);
$stmt->execute(); 
$stmt->close();

您需要检查每个步骤(prepare、bind、execute)的返回值,以确保没有返回错误。

prepare()和
execute()
没有任何意义。请尝试以下方法:

$query = "UPDATE notification SET `Current_date`=?, `Content`=?, `File_name`=?, `File_path`=?, `Apply_link`=?, `Last_date`=? WHERE `id`=?";
$stmt = $con1->prepare($query);
$stmt->bind_param("ssssssi", $_POST['post_date'], $_POST['Content'], $filename, $filepath, $_POST['apply_now'], $_POST['Last_date'], $_POST['fetch_id']);
$stmt->execute(); 
$stmt->close();

您需要检查每个步骤(准备、绑定、执行)的返回值,以确保没有返回错误。

Current\u date
是mySQL中的保留关键字,因此为了将其用作列的名称,您需要将其括在反勾中。

Current\u date
是mySQL中的保留关键字,因此,为了将其用作列的名称,您需要将其括在反勾中。

您的代码容易受到SQL注入攻击。您应该使用或准备好的语句,如中所述。您应该使用Mysqli准备好的语句,如果您不想使用准备好的语句,请尝试使用Mysqli_real_escape,因为变量的格式将其丢弃
Mysqli_real_escape_string()
不是SQL注入攻击的保险@clearshot66 OP应该绑定它们的变量。@JayBlanchard我知道。我实际上说过他们应该使用准备好的语句,但如果他们不打算转换成它们,至少要使用转义字符串。他们使用准备好的语句,只是没有绑定变量@ClearShot66。你的代码容易受到SQL注入攻击。您应该使用或准备好的语句,如中所述。您应该使用Mysqli准备好的语句,如果您不想使用准备好的语句,请尝试使用Mysqli_real_escape,因为变量的格式将其丢弃
Mysqli_real_escape_string()
不是SQL注入攻击的保险@clearshot66 OP应该绑定它们的变量。@JayBlanchard我知道。我实际上说他们应该使用准备好的语句,但如果他们不打算转换成它们,至少要使用转义字符串。他们使用准备好的语句,他们只是没有绑定变量@clearshot66Good catch,+1并将其添加到我的答案中。举个例子。Good catch,+1并将其添加到我的答案中。举个例子。