Php 使用PDO上载动态文件数

Php 使用PDO上载动态文件数,php,pdo,Php,Pdo,编辑 我正在尝试从动态HTML表单上载多个文件 可以向表单添加图像输入,如下所示: <button onclick="addImage()">Add Image</button> 添加图像 随附的添加图像的函数: 函数addImage(){ $(“表格”)。追加(‘删除’); } 当我单击表单的上载按钮时,不会抛出任何错误,但文件不会出现在数据库或图像文件夹中 以下是PHP PDO为实现这一目标所做的尝试: //SQL Statement $statementI

编辑

我正在尝试从动态HTML表单上载多个文件

可以向表单添加图像输入,如下所示:

<button onclick="addImage()">Add Image</button>  
添加图像
随附的添加图像的
函数

函数addImage(){
$(“表格”)。追加(‘删除’);
}
当我单击表单的上载按钮时,不会抛出任何错误,但文件不会出现在数据库或图像文件夹中

以下是PHP PDO为实现这一目标所做的尝试:

//SQL Statement
$statementImage = $db->prepare("INSERT INTO table (date, title, image) value (:date, :title, :image)");

//if an image is prepared for upload
if(isset($_FILES['image']['name'])) {

    //if no image was attached to upload input
    foreach($_FILES['image']['error'] as $err){
        switch ($err){
            case UPLOAD_ERR_NO_FILE:
            echo 'No file sent.';
            exit;
            }
        }

    //check for correct extension
    for($x=0; $x<count($_FILES['image']['tmp_name']); $x++){

        $file_name = $_FILES['image']['name'][$x];
        $file_tmp = $_FILES['image']['tmp_name'][$x];

        $t = explode(".", $file_name);
        $t1 = end($t);
        $file_ext = strtolower(end($t));

        $ext_check = array("jpg", "jpeg", "png", "gif", "svg");

        //move file to folder
        if(in_array($file_ext, $ext_check)){
            $filer = $file_tmp;
            $filepath = "images/" . $file_name;
            move_uploaded_file($filer, $filepath);

            //SQL statement
            $statementImage->execute(['date' => $date, 'title' => $title, 'image' => $file_name]);
            } else{
                echo "Only images can be stored.";
            }
        }
    }
}
//SQL语句
$statementImage=$db->prepare(“插入表(日期、标题、图像)值(:日期、标题、图像)”);
//如果已准备好上载图像
如果(isset($\u文件['image']['name'])){
//如果没有图像附加到上载输入
foreach($\u文件['image']['error']作为$err){
交换机($err){
案例上载\u错误\u否\u文件:
回显“未发送文件”;
出口
}
}
//检查分机是否正确
对于($x=0;$xexecute(['date'=>$date,'title'=>$title,'image'=>$file\u name]);
}否则{
echo“只能存储图像。”;
}
}
}
}

我有点想知道
如果(isset($\u FILES['image']['name']){
是询问文件是否已附加到输入的正确方法。

你不能像这样检查
如果(isset($\u FILES['image']['name'])
字段名是一个数组。您需要遍历
图像[]进行检查
field我认为这是一个问题。这样的东西的正确语法是什么?是否需要将其包装在一个
foreach
语句中以查看每个可能的图像?是否只想检查条件正确?是的,我只想检查文件是否已添加到文件输入中
//SQL Statement
$statementImage = $db->prepare("INSERT INTO table (date, title, image) value (:date, :title, :image)");

//if an image is prepared for upload
if(isset($_FILES['image']['name'])) {

    //if no image was attached to upload input
    foreach($_FILES['image']['error'] as $err){
        switch ($err){
            case UPLOAD_ERR_NO_FILE:
            echo 'No file sent.';
            exit;
            }
        }

    //check for correct extension
    for($x=0; $x<count($_FILES['image']['tmp_name']); $x++){

        $file_name = $_FILES['image']['name'][$x];
        $file_tmp = $_FILES['image']['tmp_name'][$x];

        $t = explode(".", $file_name);
        $t1 = end($t);
        $file_ext = strtolower(end($t));

        $ext_check = array("jpg", "jpeg", "png", "gif", "svg");

        //move file to folder
        if(in_array($file_ext, $ext_check)){
            $filer = $file_tmp;
            $filepath = "images/" . $file_name;
            move_uploaded_file($filer, $filepath);

            //SQL statement
            $statementImage->execute(['date' => $date, 'title' => $title, 'image' => $file_name]);
            } else{
                echo "Only images can be stored.";
            }
        }
    }
}