Ошибка при вставке изображения в MySQL с PHP - PullRequest
0 голосов
/ 19 октября 2018

Я новичок в PHP, я делаю форму для вставки в базу данных, и я не могу вставить ошибку, когда я хочу вставить изображение, в базе данных тип изображения "longblob", я прилагаю формуиPHP для вставки в базу данных.

Форма:

<form align="center" action="guardar.php" method="POST" enctype="multipart/form-data">
    <input type="text" REQUIRED name="titulo" placeholder="Titulo.." value=""/><br><br>
    <input type="text" REQUIRED name="contenido" placeholder="Contenido.." value=""/><br><br>
    <input type="text" REQUIRED name="fecha" placeholder="Fecha.." value=""/><br><br>
    <input type="file" REQUIRED name="imagen" /><br><br>
    <input type="submit" name="Aceptar" />
</form>

PHP

<?php

include("conexion.php");

$titulo=$_POST['titulo'];
$contenido=$_POST['contenido'];
$fecha=$_POST['fecha'];
$imagen=addslashes(file_get_contents($_FILES['imagen']['tmp_name']));

$query="INSERT INTO articulos(titulo,contenido,fecha,imagen) VALUES('$titulo','$contenido','$fecha','$imagen')";

mysqli_query($conexion, $query);
$resultado=$conexion->query($query);

if($resultado){
    echo "INSERT";
}else{
    echo "No INSERT";
}

?>

1 Ответ

0 голосов
/ 19 октября 2018

Вы не должны использовать file_get_contents(), это неправильная функция для этого - она ​​делает что-то еще полностью (вы можете прочитать руководство, если вам интересно, что делает эта функция).Вместо использования запроса, который вводит значения напрямую, вы также должны использовать подготовленный оператор, как показано ниже.

Это предотвратит атаки с использованием SQL-инъекций и гарантирует, что никакие данные не прервут запрос.

<?php

include "conexion.php";

$titulo = $_POST['titulo'];
$contenido = $_POST['contenido'];
$fecha = $_POST['fecha'];
$imagen = $_FILES['imagen']['tmp_name'];

$query = "INSERT INTO articulos (titulo, contenido, fecha, imagen) VALUES (?, ?, ?, ?)";

if ($stmt = $conexion->prepare($query)) {
    $stmt->bind_param("ssss", $titulo, $contenido, $fecha, $imagen);
    if ($stmt->execute()) {
        echo "Inserted");
    } else {
        // Do some logging
        error_log($stmt->error);
        echo "Not inserted";
    }
} else {
    // Do some logging
    error_log($conexion->error);
    echo "Not inserted";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...