如何使用PHP脚本在数据库上保存多个图像

时间:2016-07-01 13:23:48

标签: php html database mysqli

在我的自定义CMS上,

我已成功将管理表单中的所有值保存到数据库中。

所有这些都有一个值,但多元素呢?

如何使用多个图像保存输入文件?

以下是添加帖子页面的完整代码:

<?php
if(isset($_POST['submit'])) {
    $title_bg = $_POST['title_bg'];
    $title_en = $_POST['title_en']; 
    $body_bg = $_POST['body_bg'];
    $body_en = $_POST['body_en'];   
    $image = $_FILES['image']['name'];
    $image_tmp = $_FILES['image']['tmp_name'];  

    move_uploaded_file($image_tmp, '../uploads/' . $image);

    $status = $_POST['status'];


    $query = "INSERT INTO posts(title_bg, title_en, body_bg, body_en, image, status, created) ";
    $query .= "VALUES('$title_bg', '$title_en', '$body_bg', '$body_en', '$image', '$status', now())";

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

    header("Location: posts.php");  
} 
?>

<form action="" method="post" enctype="multipart/form-data">
    <div class="form-item">
        <label for="title_bg">Post title BG</label>
        <input type="text" name="title_bg">
    </div>

    <div class="form-item">
        <label for="title_en">Post title EN</label>
        <input type="text" name="title_en">
    </div>  

    <div class="form-item">
        <label for="body_bg">Post body BG</label>
        <textarea id="editor" name="body_bg" rows="10" cols="30"></textarea>
    </div>  

    <div class="form-item">
        <label for="body_en">Post body EN</label>
        <textarea id="editor2" name="body_en" rows="10" cols="30"></textarea>
    </div>  

    <div class="form-item">
        <label for="image">Image</label>
        <input type="file" name="image">
    </div>

    <div class="form-item">
        <label for="status">Post status</label>
        <select name="status">
            <option value="published">published</option>
            <option value="draft">draft</option>
        </select>
    </div>

    <div class="form-item">
        <input type="submit" class="form-submit" name="submit" value="Submit">
    </div>  
</form>

现在,图像值将保存到数据库图像字段中,如下所示: 样品1.JPG。

据我所知,在HTML中,多元素具有属性 multiple ,并且使用数组这一行应该是这样的:

<input type="file" name="image[]" multiple>

但是如何设置一个数组元素$ image并将多个值保存到一个字段中,所以当我上传时说三个图像时,数据库图像字段中保存的值应如下所示: sample-1.jpg,sample-2.jpg,sample-3.jpg

1 个答案:

答案 0 :(得分:2)

我建议您为上传的图像创建另一个表,并使用第一个表的外键映射它。

  

对于Ex:假设您有一个表单来添加属性详细信息。创建   用于添加属性详细信息的表,具有多个图像上载   特征。您必须在此表中存储图像的路径。   使用Image Id和Primary Key(第一个)创建另一个表   表)并映射它们。这样第二个表就会有多行   第一个表的主键。这将有助于你获取   如果需要,可以轻松拍摄。

     

<强> 1。属性表

     

包含所有字段和图片上传路径字段。

     

<强> 2。 Image_Prop表

     

包含img id(唯一)和外键(属性表)   用于映射以及其他细节。