【问题标题】:how to insert into data base table files names as array in one column如何将数据库表字段名称作为一列中的数组插入
【发布时间】:2020-04-16 02:00:42
【问题描述】:

我有一个表 t1 有两列 id 和 name 我想在一列中插入文件名

<input type="file" name="files[]" multiple></br>
<input  type="submit"  name="submit"  value="ADD">

表格

id | name
1  | e1.jpg, e2.jpg, ....

我试过了

if (isset($_POST['submit'])) {
    $output = '';  
    if(is_array($_FILES))   
    {  
        foreach ($_FILES['files']['name'] as $name => $value)  
        {  
            $file_name = explode(".", $_FILES['files']['name'][$name]);  
            $allowed_ext = array("jpg", "jpeg", "png", "gif");  
            if(in_array($file_name[1], $allowed_ext))  
            {  
                $new_name = md5(rand()) . '.' . $file_name[1];  
                $sourcePath = $_FILES['files']['tmp_name'][$name];  
                $targetPath = "picem/".$new_name;  
                $sql = "INSERT INTO phem (userid, username, img, date) VALUES 
      ('$id_user','$user','{$targetPath}','$myDate')";
                $image = mysqli_query($conn,$sql);
                if(move_uploaded_file($sourcePath, $targetPath))  
                {  
                }                 
            }            
        } 
    }
} 

但此代码会将每个文件插入一行

【问题讨论】:

标签: php html mysql database mysqli


【解决方案1】:

使用逗号分隔值代替存储为数组很容易。 所以你可以在WHERE子句FIND_IN_SET(arr_val, sql_column_name)的sql查询中直接使用这个。

如果要将其存储为数组,则应将其存储为序列化数组以使用serialize($your_array) 序列化数组并将其存储为a:0{} 类型的序列化数组。

你也可以通过unserialize($serialized_array)函数反序列化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    相关资源
    最近更新 更多