我对PHP很新,并尝试将图像上传到服务器,然后使用表单和php使用下面的代码和表单将其写入数据库但是它似乎不起作用,如果我全部使用表单中的照片内容与其他变量和内容完美匹配,例如写出文章标题和内容,是否有人能够告诉我哪里出错了?先谢谢你们。
<?php
session_start();
include_once('../php/connection.php');
if (isset($_SESSION['logged_in'])) {
if (isset($_POST['title'], $_POST['content'], $_FILES['photo1'])) {
$title = $_POST['title'];
$content = nl2br($_POST ['content']);
$photo1=($_FILES['photo1']);
$target = "../lifestlye";
$target = $target . basename( $_FILES['photo1']);
$query =$pdo->prepare('INSERT INTO article (article_title, article_content, photo_1) VALUES (?,?,?)');
$query->bindValue(1, $title);
$query->bindValue(2, $content);
$query->bindValue(3, $photo1);
$query->execute();
move_uploaded_file($_FILES['photo1'], $target);
{
}
header('Location: index.php');
}
?>
<form action="add.php" method="post" autocomplete="off"/>
<dl class="field four columns centered">
<dd><label for="title">Article Title</label></dd>
<dt class="text"><input type="text" name="title" id="title"/>
</dt>
</dl>
<dl class="field nine columns centered">
<dd><label for="content">Content</label></dd>
<dt class="textarea">
<textarea name="content" id="message"></textarea></dt>
</dl>
<p class="blacktext">Photo</p>
<input type="file" name="photo1">
<input type="submit" id="add article"/>
</form>
答案 0 :(得分:1)
试试这段代码:
<?php
session_start();
include_once('../php/connection.php');
if (isset($_SESSION['logged_in'])) {
if (isset($_POST['title'], $_POST['content'], $_FILES['photo1'])) {
$title = $_POST['title'];
$content = nl2br($_POST['content']);
$name = $_FILES['photo1']['name'];
$tmp_name = $_FILES['photo1']['tmp_name'];
$target = '../lifestlye/'.$name;
if (move_uploaded_file($tmp_name,$target)) {
$stmt = $pdo->prepare('INSERT INTO article (article_title, article_content, photo_1) VALUES (?,?,?)');
$stmt->execute(array($title,$content,$name));
header('Location: index.php');
exit();
}
}
}
答案 1 :(得分:0)
你太简单了。您需要阅读手册页:http://www.php.net/manual/en/features.file-upload.post-method.php
首先,将其作为参数enctype="multipart/form-data"
然后,了解$ _FILES ['photo1']将是一个数组,$ _FILES ['photo1'] ['tmp_name']将包含一个临时文件名,即上传的文件。然后,您可以将文件移动到新位置,或者将其读取并作为BLOB将其放入数据库(但为什么要将二进制数据保存在数据库中?)
答案 2 :(得分:0)
__DIR__
或dirname(__FILE__
),具体取决于您的php版本。第一个是首选,如果它可用。此外,basename不会过滤文件名,它只会为您提供最后一个'。'之前的内容。
编辑:+ Palantir所写的一切,为了让它成功(对不起,有很多事情,我跳过了一些)