Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将数组中的表单值插入数据库_Php_Mysql_Database_Arrays - Fatal编程技术网

Php 将数组中的表单值插入数据库

Php 将数组中的表单值插入数据库,php,mysql,database,arrays,Php,Mysql,Database,Arrays,我创建了一个表单,允许用户将多个文件上载到一个目录。现在,我试图从表单输入字段中获取文件名,并将其存储到数据库中 我试图获取输入字段的数组值,即;输入['file']['name']和['file']['tmp_name']并将它们插入数据库。使用下面的代码,我只能将单词“array”插入到数据库中,而不是文件本身的实际名称 我认为我需要使用foreach循环遍历数组,但是我不确定如何编写它以及在哪里将它插入到代码中。以下是迄今为止的代码: #connect to the database

我创建了一个表单,允许用户将多个文件上载到一个目录。现在,我试图从表单输入字段中获取文件名,并将其存储到数据库中

我试图获取输入字段的数组值,即;输入['file']['name']和['file']['tmp_name']并将它们插入数据库。使用下面的代码,我只能将单词“array”插入到数据库中,而不是文件本身的实际名称

我认为我需要使用foreach循环遍历数组,但是我不确定如何编写它以及在哪里将它插入到代码中。以下是迄今为止的代码:

#connect to the database
    mysql_connect("localhost", "root", "");
    mysql_select_db("masscic");

    //Upload Handler to check image types
    function is_image($file) {

    $file_types = array('jpeg', 'gif', 'bmp'); //acceptable file types

    if ($img = getimagesize($file)){

        //echo '<pre>';
        //print_r($_FILES); //will return an array of information for testing
        //print_r($img); //will return an array of information for testing

        if(in_array(str_replace('image/', '', $img['mime']), $file_types))
        return $img;
    }
    return false;
}
    //form submission handling
    if(isset($_POST['submit'])) {

    //file variables

    $fname = $_FILES['files']['name'];
    $ftype = $_FILES['files']['type'];
    $fsize = $_FILES['files']['size'];
    $tname = $_FILES['files']['tmp_name'];
    $ferror = $_FILES['files']['error'];
    $newDir = '../uploads/'; //relative to where this script file resides

    for ($i = count($fname) -1; $i >=0; $i--) {
        if ($ferror[$i] =='UPLOAD ERR OK' || $ferror[$i] ==0) 

        {   

            if(is_image($tname[$i]))
            {
                move_uploaded_file($tname[$i], ($newDir.time().$fname[$i])); 
                echo '<li><span class="success">'.$fname[$i].' -- image has been accepted<br></span></li>';

            }else 
                echo '<li><span class="error">'.$fname[$i].' -- is not an accepted file type<br></span></li>';
        }
    }
}
            $sqlInsert = mysql_query("INSERT INTO files (file_names) VALUES('$fname')") or die (mysql_error());
#连接到数据库
mysql_connect(“本地主机”、“根目录”、“根目录”);
mysql_select_db(“masscic”);
//上载处理程序以检查图像类型
函数是_image($file){
$file_types=array('jpeg','gif','bmp');//可接受的文件类型
如果($img=getimagesize($file)){
//回声';
$_FILES['files']['name'][0]; // a.html
$_FILES['files']['name'][1]; // b.html
$_FILES['files']['size'][0]; // size of a.html
$_FILES['files']['size'][1]; // size of b.html
//print_r($_FILES);//将返回一个用于测试的信息数组 //print_r($img);//将返回一个用于测试的信息数组 if(在数组中(str_replace('image/',''.$img['mime']),$file_types)) 返回$img; } 返回false; } //表格提交处理 如果(isset($_POST['submit'])){ //文件变量 $fname=$_文件['FILES']['name']; $ftype=$_文件['FILES']['type']; $fsize=$_文件['FILES']['size']; $tname=$\u文件['FILES']['tmp\u名称']; $ferror=$_文件['FILES']['error']; $newDir='../uploads/';//相对于此脚本文件所在的位置 对于($i=count($fname)-1;$i>=0;$i--){ 如果($ferror[$i]='UPLOAD ERR OK'| |$ferror[$i]==0) { if(is_image($tname[$i])) { 移动上传的文件($tname[$i],($newDir.time().$fname[$i]); 回显“
  • ”。$fname[$i].--图像已被接受
  • ”; }否则 echo“
  • ”。$fname[$i].--不是可接受的文件类型
  • ; } } } $sqlInsert=mysql\u query(“插入到文件(文件名)值('$fname'))或die(mysql\u error());

    感谢您的帮助。

    上载多个文件(具有相同的字段名)时,会向阵列中添加另一个维度。假设我上传a.html和b.html,我会得到:

    for(var $i = 0; $i < count($_FILES['files']['name']); $i++) {
        echo 'File name ' . $_FILES['files']['name'][$i] . ' has size ' . $_FILES['files']['size'][$i];
    }
    
    要遍历:

    for(var$i=0;$i

    这一点在

    Hi中进行了说明。我已经广泛地阅读了那一页,但我不能完全理解它。这就是我想到“foreach”循环的原因。你是说我应该用我的for循环替换上面的循环吗?如果是这样,for循环会给出一个解析错误。我修复了解析错误并将其插入到数据库中,但它会创建三条单独的记录。也就是说,如果用户上载三个文件,则会在数据库中创建三个单独的记录。我希望将所有三个文件作为一条记录计入数据库中名为“files”的一个数据库列中。