2016-11-16 44 views
1

我必须编码插入数据与图像。当我插入信息时,信息将被保存到表格中,除了图像和图像名称将为空 我不知道问题是什么?为什么数据插入数据库W/OERERER,但图像和图像名称不插入

该类型的图像为LONGBLOB和形象名称为varchar

addEmployee.php

<?php 
session_start(); 
require 'common.php'; 
$connection = new mysqli($localhost , $dusername , $dpassword,$database); 

if ($connection->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

//echo "Connected successfully"; 
echo "<pre>"; 
//$EmpID = $_POST['EmpID']; 
$SSN = $_POST['SSN']; 
$Fname = $_POST['Fname']; 
$Lname = $_POST['Lname']; 
$PhoneNumber = $_POST['PhoneNumber']; 
$Salary = $_POST['Salary']; 
$Email = $_POST['Email']; 
$JobTitle = $_POST['JobTitle']; 
$Password = $_POST['Password']; 
$image= addslashes(file_get_contents($_FILES['image']['tmp_name'])); 
$name = addslashes($_FILES['image']['imageName']); 

$query = "INSERT INTO `employee`(`SSN`, `Fname`, `Lname`, `PhoneNumber`, `Salary`, `Password`, `JobTitle`,`Email` , `image` , `name`)"; 
$query.=     "VALUES('$SSN','$Fname','$Lname','$PhoneNumber','$Salary','$Password','$JobTitle' ,'$Email' ,'$image' ,'$name')"; 

$result = mysqli_query($connection, $query); 

if (!$result) 
{ 
    echo "1"; 
    die("Query failed". mysqli_errno($connection)); 
} 
else { 
    header("location: admin.html"); 
} 
?> 
+0

不要将文件保存到数据库中。 http://stackoverflow.com/a/38829952/267540 – e4c5

+0

您应该在您的代码目录中创建一个文件夹,并将上传的文件移至该位置。移动文件成功后,只需将上传的文件详细信息(名称)保存至数据库。 –

+0

您是否检查了您是否获取了文件和名称的内容。在$ image和$ name变量中。 –

回答

0

即使在DB存储图像是一个值得商榷的做法,竟被我试图告诉你一些问题。 1. $ _FILES不包含'imageName'键,只是名称。请参阅http://php.net/manual/ro/features.file-upload.post-method.php 2.确保图像字段类型足够大以存储整个图像内容(转储$ image的一大串)。使用blob。另外,你是否确定该帖子向你发送图片? 3.删除echo“pre”...它打乱您将用于重定向的headers指令。

什么是sql errorno?另外,请注意安全问题。图像可以注入大量可执行代码。最安全的方式(在你的情况下)是创建一个克隆(imagecreate)。

+0

感谢您的意见。我没有收到任何错误号码。除图像和图像名称外,所有信息都将保存在数据库中 – Mohammed