Я новичок в php, html и mysql, поэтому извиняюсь за мой вопрос.Прочтите изображение blob из mysql и покажите его
Я загружаю изображение в mysql (эта часть работает нормально), Теперь я пытаюсь прочитать его и отобразить на моей странице.
Вот мой код, чтобы сохранить его в MySQL
echo "<br>file selected run script";
echo "<br>file name : ".$_FILES['userfile']['name'];
echo "<br>file type : ".$_FILES['userfile']['type'];
echo "<br>file size : ".$_FILES['userfile']['size'];
$name = $_FILES['userfile']['name'];
$type = $_FILES['userfile']['type'];
$tmpName = $_FILES['userfile']['tmp_name'];
echo "$tmpName";
$fp = fopen($tmpName, 'r');
$data = fread($fp, filesize($tmpName));
$data = addslashes($data);
fclose($fp);
$sql = "INSERT INTO images (image,name,type)
VALUES ('$data','$name','$type')";
$conn->exec($sql);
и работать. У меня есть HTML-файл с ним.
и loadimage.php является:
$ ID = filter_input (INPUT_GET, "Идентификатор", FILTER_SANITIZE_NUMBER_INT); попробовать {
/*** set the PDO error mode to exception ***/
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
/*** The sql statement ***/
$sql = "SELECT image,type FROM images WHERE id='$id'";
echo $sql;
/*** prepare the sql ***/
$stmt = $conn->prepare($sql);
/*** exceute the query ***/
$stmt->execute();
/*** set the fetch mode to associative array ***/
$stmt->setFetchMode(PDO::FETCH_ASSOC);
/*** set the header for the image ***/
$array = $stmt->fetch();
/*** check we have a single image and type ***/
if(sizeof($array) == 2)
{
/*** set the headers and display the image ***/
header("Content-type:".$array['type']);
/*** output the image ***/
echo $array['image'];
}
else
{
throw new Exception("Out of bounds Error");
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
catch(Exception $e)
{
echo $e->getMessage();
}
}
еще { эхо 'Пожалуйста, используйте реальный номер ID'; }
Он подключается к mysql, это не проблема.
Но хром консоль дает мне сообщение:
Ресурс интерпретирован как документ, но передается с MIME тип изображения/JPEG: «http://xxxxxxxxxxxxx/loadimage.php?id=12».
при попытке получить свой ID изображения: 12 (все изображения дают тот же результат ....)
вы не используете чтобы вы были открыты для SQL-инъекций – cmorrissey
** ПРЕДУПРЕЖДЕНИЕ **: При использовании PDO вы должны использовать [подготовленные заявления] (http://php.net/manual/en/pdo.prepared-statements.php) с помощью значения закладок и предоставлять любые пользовательские данные в качестве отдельных аргументов. В этом коде у вас есть потенциально серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/). Никогда не используйте строчную интерполяцию или конкатенацию и вместо этого используйте [подготовленные заявления] (http://php.net/manual/en/pdo.prepared-statements.php) и никогда не ставьте данные '$ _POST' или' $ _GET' прямо в свой запрос. Обратитесь к [PHP The Right Way] (http://www.phptherightway.com/) для ознакомления с этой и другими проблемами. – tadman