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

使用prepare statment从服务器取消图像链接找不到图像

  •  0
  • user1805543  · 技术社区  · 6 年前

    我在显示图像值方面有问题,它找不到图像。

    当我删除帖子时,我想删除属于帖子的图像,但图像值变为emtpy。 需要帮助以找出我在查询中的错误所在。

    我的查询:

    if (isset($_GET['id'])) {
    
    $delete =   $_GET['id']; 
    $stmt = $conn->prepare("SELECT image FROM posts WHERE id = ?");
    $stmt->bind_param('i', $delete);
    $stmt->execute();
    $stmt->bind_result($image);
    $row = $stmt->fetch();
    $stmt->close();
    
    $stmt = $conn->prepare("DELETE FROM posts WHERE id = ?"); 
    $stmt->bind_param('i', $delete);
    $stmt->execute(); 
    $stmt->close();
    
    $filename = '../images/posts/'.$row['image'].'';
      if (file_exists($filename)) {
        unlink($filename);
        echo 'File '.$filename.' has been deleted';
      } else {
        echo 'Could not delete '.$filename.', file does not exist';
      }
    }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Michael Eugene Yuen    6 年前
    if (isset($_GET['id'])) {
    
        $delete = $_GET['id']; 
        $stmt = $conn->prepare("SELECT image FROM posts WHERE id = ?");
        $stmt->bind_param('i', $delete);
        $stmt->execute();
        $stmt->bind_result($image);
        $stmt->fetch();
        $stmt->close();
    

    bind_result()

    将结果集中的列绑定到变量。

    fetch()

    将准备好的语句中的结果提取到mysqli\u stmt\u bind\u result()绑定的变量中。

        $filename = '../images/posts/'.$image;
        if (file_exists($filename)) {
          unlink($filename);
          echo 'File '.$filename.' has been deleted';
        } else {
          echo 'Could not delete '.$filename.', file does not exist';
        }
    }
    

    您可以使用 var\u转储($图像) 检查结果。如果为NULL,则表示未找到任何记录。您可能需要检查$\u GET['id']的值,或者检查表中是否存在记录。