我如何在数据库中插入图像?

时间:2015-09-17 10:08:24

标签: php image

我的表名是tbl_selluaed_car,我的字段是(S_car_id, S_car_name, S_car_model, S_car_fueltype, S_car_date, S_car_color, S_car_seat, S_car_engine, S_car_description, S_car_image, S_car_price, S_car_cit, S_car_state)我想在数据库中插入carwala

我正在使用php 5.3
我的代码是:

<?php
$hostname = "localhost";
$username = "root";
$password ="";
$dbname="carwala";

$dbc = mysqli_connect($hostname,$username,$password,$dbname);


echo "you are connected";
$S_car_id = $_POST['S_car_id'];
$S_car_name = $_POST['S_car_name'];
$S_car_model = $_POST['S_car_model'];
$S_car_fueltype = $_POST['S_car_fueltype'];
$S_car_date = $_POST['S_car_date'];
$S_car_color = $_POST['S_car_color'];
$S_car_seat = $_POST['S_car_seat'];
$S_car_engine = $_POST['S_car_engine'];
$S_car_description = $_POST['S_car_description'];
$S_car_image=$_FILES["S_car_image"];
$S_car_price = $_POST['S_car_price'];
$S_car_city = $_POST['S_car_city'];
$S_car_state = $_POST['S_car_state'];

mysqli_query($dbc,"INSERT INTO       tbl_selluaed_car(S_car_name,S_car_model,S_car_fueltype,S_car_date,S_car_color,S_car_seat,S_car_engine,S_car_description,S_car_image,S_car_price,S_car_city,S_car_state) VALUES('$S_car_name','$S_car_model','$S_car_fueltype','$S_car_date','$S_car_color','$S_car_seat','$S_car_engine','$S_car_description','$S_car_image','$S_car_price','$S_car_city','$S_car_state')");
$reg=mysqli_affected_rows($dbc);
echo $reg. " your DATA is Send to Carwala";
?>

但未插入图片。

3 个答案:

答案 0 :(得分:1)

您不希望将实际图像文件插入数据库。这是非常低效的。

而是将图像上传到本地文件系统,然后将该文件的名称存储在表中。

答案 1 :(得分:0)

您必须将BLOB S_car_image列设置到您的表格中,之后非常简单,请在查询之前执行此操作:

$fp      = fopen($_FILES["S_car_image"]["tmp_name"], 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);

PS:看看PDO PHP,访问数据库会更好。 PS2:也许你应该这样看:http://php.net/manual/en/mysqli.real-escape-string.phpmysqli_real_escape_string ($connection, $content);

答案 2 :(得分:0)

您必须从$_FILES['userfile']['tmp_name']检索文件,但必须从上传的文件中使用fopen()检索该文件;它不会自动出现在脚本内存中。所以,总的来说:

$FH = fopen($_FILES['S_car_image']['tmp_name'], 'r');
$image = fread($FH, 999999);
fclose($FH);

由于您要插入二进制数据,因此在将其提交到数据库之前,应使用X'<data>'将其转义:

$S_car_image = "X'$image'";

确保您的表单包含enctype =“multipart / form-data”。数据库字段必须能够保存二进制数据,因此您必须使用BLOB字段。您还将mime类型($_FILES['S_car_image']['type'])存储在另一个数据库字段中,以设置正确的输出标头。

请务必阅读有关file uploads in PHP throroghly的文档。并且请了解SQL注入攻击,因为您的代码容易受到攻击。