【问题标题】:You have an error in your SQL syntax- PHP您的 SQL 语法有错误 - PHP
【发布时间】:2017-03-30 18:37:41
【问题描述】:

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

这是即将发生的错误。

您的 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();     
}

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

【问题讨论】:

  • 您的代码容易受到 SQL 注入攻击。您应该使用mysqliPDO 准备好的语句,如this post 中所述。
  • 你应该使用 Mysqli 准备好的语句,如果你不想使用准备好的语句,请尝试使用 mysqli_real_escape,因为你的变量的格式是把它扔掉
  • mysqli_real_escape_string() 不是防止 SQL 注入攻击的保险@clearshot66 OP 应该绑定它们的变量。
  • @JayBlanchard 我知道。我实际上说过他们应该使用准备好的语句,但如果他们不打算转换为它们,至少使用转义字符串。
  • 他们使用了一个准备好的语句,他们只是没有绑定他们的变量@clearshot66

标签: php mysql mysqli


【解决方案1】:

如果你不是using them properlyprepare()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();

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

【讨论】:

    【解决方案2】:

    Current_date 是 mySQL 中的保留关键字,因此为了将其用作列名,您需要将其括在反引号中。

    【讨论】:

    • 很好,+1 并将其添加到我的答案中。
    • 举个例子。
    猜你喜欢
    • 2014-04-21
    • 2014-10-25
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    相关资源
    最近更新 更多