Intereting Posts

pdo вставить изображение в базу данных напрямую – всегда вставлять BLOB – 0B

Я пытаюсь вставить изображение в таблицу базы данных mysql напрямую. В моей базе данных я всегда получаю [BLOB – 0B]. он не вставляет изображения в таблицу. Я тоже не ошибся. Я смущен..

PHP

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

HTML

 <form action="upload.php" method="post"> <input id="image" name="image" type="file" /> <input type="submit" value="Upload" /> </form> 

Вы почти получили его, вы хотите, чтобы PDO::PARAM_LOB был указателем файла, который вы создали выше, а не результатом чтения fp

 if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) { $tmpName = $_FILES['image']['tmp_name']; $fp = fopen($tmpName, 'rb'); // read binary } try { $stmt = $conn->prepare("INSERT INTO images ( picture ) VALUES ( ? )"); $stmt->bindParam(1, $fp, PDO::PARAM_LOB); $conn->errorInfo(); $stmt->execute(); } catch(PDOException $e) { 'Error : ' .$e->getMessage(); }