php - 将图像上传到 mysqli 数据库时出现问题

标签 php html mysql mysqli

自从我添加了上传图像的功能后,我的脚本就不再工作了..这意味着我无法将新帖子插入数据库。 请帮我解决这个问题,谢谢!如有更多问题,请使用下面的评论部分:)

PHP:

<?php
session_start();
header('content-type: text/html; charset=utf-8');
$uname = $_POST['username'];
$typ = $_POST['typ'];
$titel = $_POST['titel'];
$content = $_POST['content'];
$timestamp = time();

$db = new mysqli("localhost", "...", "...", "...");
if($db->connect_errno > 0){
    die("Unable to connect to database: " . $db->connect_error);
}

if(is_uploaded_file($_FILES['image']['tmp_name'])) {
        // Verweis auf Bild
        $image = $_FILES['image']['tmp_name'];

        // Vorbereiten für den Upload in DB
        $data = addslashes(file_get_contents($image));

        // Metadaten auslesen
        $meta = getimagesize($image);
        $mime = $meta['mime'];
}

//create a prepared statement
$stmt = $db->set_charset("utf8");
$stmt = $db->prepare("INSERT INTO artikel (`red`, `typ`, `titel`, `content`, `image`, `mimetype`, `timestamp`) VALUES (?,?,?,?,?,?,?)");

//bind the username and message
$stmt->bind_param('sssssss', $uname, $typ, $titel, $content, $data, $mime, $timestamp);

//run the query to insert the row
$stmt->execute();

header("Location: erfolg.php");

?>

html 表单:

<form name="form2" action="insert.php" method="post">
Username:<br>
<input style="width:100%;" type="text" accept-charset="utf-8" name="username" value="<?php echo $_SESSION['username']; ?>" class="login_form" readonly><br><br>
Typ:<br>
<input style="width:100%;" type="text" name="typ" value="blog" class="login_form" readonly><br><br>
Titel:<br>
<input style="width:100%;" type="text" placeholder="Überschrift, z.B. Die Kunst des Spickens" name="titel"><br><br>
Inhalt:<br>
<textarea style="width:100%; height:250px; font:Arial, Helvetica, sans-serif !important;" type="text" placeholder="Inhalt" name="content"></textarea><br><br>
Bild anhängen (maximal 1 Bild):<br>
<input name="image" type="file"><br><br>
<input type="submit" value="Eintragen">
</form>

这就是 php 和 html,感谢您的帮助!

抱歉英语不好

最佳答案

首先,您的表单需要 enctype="multipart/form-data"来上传文件。

其次,将上传的文件从临时目录中移动并将路径保存在数据库中,而不是保存临时图像的完整二进制数据,这不是一个好主意吗?

http://php.net/manual/en/function.move-uploaded-file.php

关于php - 将图像上传到 mysqli 数据库时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28928901/

相关文章:

php - 如何在 PHP 中对字符串进行切片?

javascript - 过滤数据属性 jQuery

html - 鼠标悬停在列表图像上时显示文本

javascript - 使用Codeigniter,如何使用get_where,但不包含某些行?

javascript - 使用 AJAX 将 javascript 变量传递给 PHP

javascript - parseInt 正在为总值的 CSS 属性返回 NaN

php - 无法连接到 mySQL 数据库

html - 如何创建行中具有不同单元格数的表格?

mysql - 有没有办法将规范化数据选回一个结果集中

php - CodeIgniter db->查询在 SELECT 上返回 false