上传图像并存储到数据库

时间:2017-06-04 03:25:59

标签: php html mysql sql web

我又回到了编程状态,我现在卡住了,因为我无法将图像上传到我的数据库。   我昨晚正在阅读一些代码和答案,我仍然被困在这里......它返回“成功创建新记录”,但我的数据库中没有存储任何内容。希望有人能帮我解决这个问题:)谢谢!

    

<form method="post" action="" enctype="multipart/form-data">

    Upload File:
    <input type="file" name="upload" /><br> 
    <input type="submit" name="submit" value="Submit"/>
</form>
</body>
</html>

<?php
    $servername ="localhost";
    $username = "root";
    $password = "";
    $dbname = "produ_db";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
if(isset($_POST['submit'])  ){


$filename = $conn->real_escape_string($_FILES['upload']['name']);
$filedata= $conn->real_escape_string(file_get_contents($_FILES['upload']['tmp_name']));


if ($_FILES['upload']['name'] == 0 ){

echo "<br><br> New record created successfully";

}

else {
    /*where acc_cap is the image caption && acc_img is a blob type to store images*/
    $query = "INSERT INTO accessories(`acc_cap`,`acc_img`) VALUES ('$filename','$filedata')" ;
    if ($conn->query($query) === TRUE) {
    echo "<br><br> New record created successfully";
    } else {
    echo "Error:<br>" . $conn->error;
    }

}
$conn->close(); 
}   

?>

1 个答案:

答案 0 :(得分:1)

1 - 你有:

echo "<br><br> New record created successfully";

两次 - 成功(INSERT之后)和失败($_FILES['upload']['name'] == 0)。更改失败消息,以便了解正在发生的事情。

2 - 移动:

$filename = $conn->real_escape_string($_FILES['upload']['name']);
$filedata= $conn->real_escape_string(file_get_contents($_FILES['upload']['tmp_name']));

跟随$_FILES['upload']['name']的测试,因为如果没有文件名,file_get_contents函数将失败。

3 - 检查我自己的代码,看起来我通常使用$_FILES['upload']['name'] == ''而不是== 0。 PHP通常同样处理0和空字符串,但在这种情况下,我认为空字符串是正确的比较,因为当它具有实际文件名时,这是一个字符串字段。

4 - 通常被认为是在数据库中存储完整图像(或其他)文件的错误形式 - 最好只在数据库中存储文件系统(参见http://php.net/manual/en/function.move-uploaded-file.php)。话虽如此,有时它是有道理的,我有时会在数据库中存储完整的文件。