【问题标题】:upload multiple file_name in db在数据库中上传多个文件名
【发布时间】:2015-01-20 08:25:28
【问题描述】:

您好,我想上传多个文件并将多个文件名存储在数据库中。 它正在正确上传文件,但没有在一列中存储多个文件名, 例如如果我要上传两个文件,因此它将两个文件名存储在两个新列中,但我想将两者都存储在同一列中。

注意: 这是我用来上传文件名的代码

foreach($filepath as $a) {
            $a['file_name'].=",";
            echo $a['file_name'];
$db_data = array('pic_id'=> NULL,
'ad_pic'=> $a['file_name']);
$this->db->insert('pics',$db_data);
    }

我的控制器

<?php

class upload extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        $this->load->helper(array('form', 'url'));
    }

    function index()
    {
        $this->load->view("main_temp/header.php");
       $this->load->view('first_body');
        $this->load->view("main_temp/footer.php");
    }

// controller
function do_upload()
{
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '100';
    $config['max_width']  = '1024';
    $config['max_height']  = '768';
    $this->load->library('upload', $config);


    if($this->input->post('submit'))
    {
         $path = './uploads';
        if($this->upload->do_multi_upload("myfile")){
            echo '<pre>';
            print_r($this->upload->get_multi_upload_data());
            echo '</pre>';


        $this->load->model('mypost');
        $this->mypost->post();
      }
    }else{
        $this->load->view("main_temp/header.php");
        $this->load->view('upload_f');
        $this->load->view("main_temp/footer.php");
    }
    }

    }

?>

我的模特

<?php
class mypost extends CI_Model
{

    function post()
    { 
        $filepath =$this->upload->get_multi_upload_data('file_name'); 

foreach($filepath as $a) {
            $a['file_name'].=",";
            echo $a['file_name'];
$db_data = array('pic_id'=> NULL,
'ad_pic'=> $a['file_name']);
$this->db->insert('pics',$db_data);
    }
        $title=$_POST['title'];
        $description=$_POST['description'];

        $category=$_POST['category'];
        $this->db->trans_begin();

        $this->db->query("insert into post (title,detail)
         values ('$title','$description')");


        $ad_id = $this->db->insert_id();

        $this->db->query("insert into category (cat_type,post_id_fk)
 values ('$category', $ad_id)");

        if ($this->db->trans_status() === FALSE)
        {
            $this->db->trans_rollback();
        }
        else
        {
      //  echo "<h1> Hurrah! </h1> <br> Data has been saved";
            $this->db->trans_commit();
        }
    }

}
?>

【问题讨论】:

    标签: php mysql codeigniter upload


    【解决方案1】:

    假设$this-&gt;upload-&gt;get_multi_upload_data('file_name') 返回一个数组,它在数据库中创建多行的原因是因为您为每个返回的文件名运行$this-&gt;db-&gt;insert('pics', $db_data);

    相反,尝试将您的数据保存到在foreach 循环之外建立的变量中,并在循环完成后将其发布到数据库,因此:

    $filepath = $this->upload->get_multi_upload_data('file_name'); 
    
    $filenames = ''
    
    foreach($filepath as $a) {
        $filenames .= $a['file_name'].",";
    }
    $filenames = rtrim($filenames,',');
    
    
    $db_data = array(
        'pic_id'=> NULL,
        'ad_pic'=> $filenames
    );
    $this->db->insert('pics', $db_data);
    

    【讨论】:

    • 非常感谢你。
    • 你有一点问题吗?
    • 还在这里——问吧!
    【解决方案2】:

    我对现有代码几乎没有更改以获取文件名 filename1,filename1, to filename1,filename2

    foreach($filepath as $a) {
        $filenames .= $a['file_name'].",";
    }
    $filenames = rtrim($filenames,','); // I have make changes here
    

    此代码将删除文件名字符串末尾不必要的(逗号)。

    【讨论】:

      猜你喜欢
      • 2021-06-25
      • 2015-03-30
      • 1970-01-01
      • 2021-12-16
      • 2018-04-24
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 2013-08-15
      相关资源
      最近更新 更多