Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como fazer upload de imagens no banco de dados MySQL usando código PHP


Em primeiro lugar, você deve verificar se sua coluna de imagem é do tipo BLOB !

Eu não sei nada sobre sua tabela SQL, mas se eu tentar fazer a minha como exemplo.

Temos os campos id (int), image (blob) e image_name (varchar(64)).

Então o código deve ficar assim (suponha que o ID seja sempre '1' e vamos usar este mysql_query):
$image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); //SQL Injection defence!
$image_name = addslashes($_FILES['image']['name']);
$sql = "INSERT INTO `product_images` (`id`, `image`, `image_name`) VALUES ('1', '{$image}', '{$image_name}')";
if (!mysql_query($sql)) { // Error handling
    echo "Something went wrong! :("; 
}

Você está fazendo isso errado de várias maneiras. Não use funções mysql - elas estão obsoletas! Use PDO ou MySQLi . Você também deve pensar em armazenar os locais dos arquivos no disco. Usar o MySQL para armazenar imagens é considerado Bad Idea™. Manipular a tabela SQL com big data como imagens pode ser problemático.

Além disso, seu formulário HTML está fora dos padrões. Deve ficar assim:
<form action="insert_product.php" method="POST" enctype="multipart/form-data">
    <label>File: </label><input type="file" name="image" />
    <input type="submit" />
</form>

Nota:

Ao lidar com arquivos e armazená-los como um BLOB, os dados devem ser escapados usando mysql_real_escape_string() , caso contrário, resultará em um erro de sintaxe.