php pdo将图像直接插入数据库-始终插入BLOB -0 B

jv4diomz  于 2023-01-01  发布在  PHP
关注(0)|答案(1)|浏览(163)

我试图将图像直接插入到MySQL数据库表中。在我的数据库中,我总是得到[BLOB-0B]。它不会将图像插入到表中。我也没有收到任何错误。我很困惑。

    • 菲律宾**
ini_set('display_startup_errors',1);
    ini_set('display_errors',1);
    error_reporting(-1);

    include('config.php');
     if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) 
      { 
          $tmpName  = $_FILES['image']['tmp_name'];  

          $fp = fopen($tmpName, 'r');
          $data = fread($fp, filesize($tmpName));
          $data = addslashes($data);
          fclose($fp);
      } 

      try
        {
            $stmt = $conn->prepare("INSERT INTO images ( picture ) VALUES ( '$data' )");
//          $stmt->bindParam(1, $data, PDO::PARAM_LOB);
            $conn->errorInfo();
            $stmt->execute();
        }
        catch(PDOException $e)
        {
            'Error : ' .$e->getMessage();
        }
    • 超文本标记语言**
<form action="upload.php" method="post">
<input id="image" name="image" type="file" />
<input type="submit" value="Upload" />
</form>
y3bcpkx1

y3bcpkx11#

你几乎得到它,你想要PDO::PARAM_LOB是你上面创建的文件指针,而不是阅读fp的结果

if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) 
{ 
   $tmpName  = $_FILES['image']['tmp_name'];  
   $fp = fopen($tmpName, 'rb'); // read binary

   $stmt = $conn->prepare("INSERT INTO images ( picture ) VALUES ( ? )");
   $stmt->bindParam(1, $fp, PDO::PARAM_LOB);
   $stmt->execute();
}

相关问题