代码之家  ›  专栏  ›  技术社区  ›  user2652699

PHP MYSQL映像更新无法正常运行,并显示“您的SQL语法有错误”

  •  -1
  • user2652699  · 技术社区  · 7 年前

    这快把我逼疯了!为了解决这个错误,我已经呆了两个晚上了。我还到处搜索这个问题,“谷歌”似乎找不到正确的答案。

    我想用PHP更新图像。代码似乎只处理了一条错误消息,该错误消息表示:

    “43错误:无法执行1。您的SQL语法有错误;请查看与您的MySQL server版本对应的手册,以了解第1行“1”附近使用的正确语法。”。

    请帮帮我!我将非常感激。:)

    <?php include('../db_connect.php'); 
    echo $id = $_GET['id'];
    
    $sql = mysqli_query($con, "
    SELECT * 
      FROM `blog_posts` 
     WHERE post_id='$id'");
    $row = mysqli_fetch_array($sql);
    
        //-------------------WHEN SUBMIT BUTTON IS CLICKED------------------------
        if(isset($_POST['submit'])){
            $post_title = $_POST['posttitle'];
            $content = $_POST['content'];
            $author_name = $_POST['authorname'];
            $category = $_POST['category'];
            if(isset($_FILES['image']['name']) && ($_FILES['image']['name'] !="")){
                $size=$_FILES['image']['size'];
                $temp=$_FILES['image']['tmp_name'];
                $type=$_FILES['image']['type'];
                $image_name=$_FILES['image']['name'];
                unlink("../images/"."$image_name");
    
                move_uploaded_file($temp,"../images/$image_name");
            }
    
        //-------------------UPDATE POST------------------------
    
            $edit = mysqli_query($con, "
    UPDATE blog_posts 
       SET post_title='$post_title'
         , content='$content'
         , author_name='$author_name'
         , category='$category'
         , post_date=now()
         , image='$image_name' 
     WHERE post_id='$id'
    ");
            if(mysqli_query($con, $edit)){
                echo "date updated successfully";
            } else{
                echo "ERROR: Could not able to execute $edit. " . mysqli_error($con);
            }
        }
    
    ?>
    
    <form action="edit.php?id=<?php echo $row['post_id']; ?>" method="post" enctype="multipart/form-data">      
                    <input type="hidden" name="size" value="1000000" />
                    <input type="text" name="posttitle" value="<?php echo $row['post_title'];?>" /><br />
                    <textarea name="content"><?php echo $row['content'];?></textarea><br />
                    <input type="text" name="authorname" value="<?php echo $row['author_name'];?>"/><br />
                    <input type="text" name="category" value="<?php echo $row['category'];?>"><br />
                    <img src="../images/<?php echo $row['image'];?>" />
                    <input type="file" name="image" /><br />
                    <button type="submit" name="submit" >Post</button>                  
                </form>
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Funk Forty Niner    7 年前

    答案(相当)简单,您可能觉得很奇怪,但从某种意义上来说,这意味着您的查询实际上执行了。

    现在,你得到这个的原因 1 根据 right syntax to use near '1' (错误)消息,是您使用的 mysqli_query() 两次,就在这里:

            $edit = mysqli_query($con, "
                    ^^^^^^^^^^^^ Here
    UPDATE blog_posts 
       SET post_title='$post_title'
         , content='$content'
         , author_name='$author_name'
         , category='$category'
         , post_date=now()
         , image='$image_name' 
     WHERE post_id='$id'
    ");
            if(mysqli_query($con, $edit)){
               ^^^^^^^^^^^^ and here
                echo "date updated successfully";
            }
    

    你需要做的就是改变 if 声明收件人:

    if($edit){
    // handle your method here.
    }
    

    顺便说一句,您将面临严重的sql注入;如果您重视您的工作和用户群,请使用准备好的语句。