"警告:in_array()最多需要3个参数,5个给定"当尝试上传文件

时间:2016-07-17 03:37:24

标签: php mysql forms

我尝试在表单中使用一些文件输入来上传几种不同的文件类型,当单击提交按钮时,文件中的多个文件存储在mysql表中。 问题是当点击sumbit时它会显示一个错误:"警告:in_array()最多需要3个参数,在...."中给出5。当我使用一个输入文件时,该文件已成功上传到服务器文件夹。 这是我使用的代码:

$dir = $name;
$target_dir = "my-file/$dir/";
if( is_dir($target_dir) === false )
    {
        mkdir($target_dir);
    }

if(isset($_POST["submit"])) {
    $formatfilea = array("pdf");
    $formatfileb = array("pdf");
    $formatfilec = array("pdf");
    $formatfiled = array("jpg, jpeg");

    $filea = $_FILES['filea']['name'];
    $fileb = $_FILES['fileb']['name'];
    $filec = $_FILES['filec']['name'];
    $filed = $_FILES['filed']['name'];

    $xa = explode('.', $filea);
    $xb = explode('.', $fileb);
    $xc = explode('.', $filec);
    $xd = explode('.', $filed);

    $existencea = strtolower(end($xa));
    $existenceb = strtolower(end($xb));
    $existencec = strtolower(end($xc));
    $existenced = strtolower(end($xd));

    $sizea  = $_FILES['filea']['size'];
    $sizeb  = $_FILES['fileb']['size'];
    $sizec  = $_FILES['filec']['size'];
    $sized  = $_FILES['filed']['size'];

    $file_tmp_a = $_FILES['filea']['tmp_name']; 
    $file_tmp_b = $_FILES['fileb']['tmp_name']; 
    $file_tmp_c = $_FILES['filec']['tmp_name']; 
    $file_tmp_d = $_FILES['filed']['tmp_name']; 

    if(in_array($existencea, $formatfilea && $existenceb, $formatfileb && $existencec, $formatfilec && $existenced, $formatfiled) === true){

            if($sizea < 1044070 && $sizeb < 1044070 && $sizec < 1044070 && $sized < 1044070){           
                move_uploaded_file($file_tmp_a, $target_dir.$filea);
                move_uploaded_file($file_tmp_b, $target_dir.$fileb);
                move_uploaded_file($file_tmp_c, $target_dir.$filec);
                move_uploaded_file($file_tmp_d, $target_dir.$filed);
            } else {

            }
        }
    }



// attempt insert query execution

$sql = "INSERT INTO test (filea, fileb, filec, filed) VALUES ('$filea', '$fileb', '$filec', '$filed')";

有谁可以帮我提供解决方案?是什么导致这个错误?为什么我在文件服务器上找不到上传的文件?

2 个答案:

答案 0 :(得分:2)

您应该参考in_array()的语法。它接受至少两个参数。

if (in_array($existencea, $formatfilea, true) && in_array($existenceb, $formatfileb, true) && in_array($existencec, $formatfilec, true) && in_array($existenced, $formatfiled, true)) {

首先是你要找的那个。

第二个是数组。

第三个参数是可选的。如果要使用严格检查,则可以将其设置为true,以便它也检查类型。

您只需要以这种方式编写if语句:

this.$http.get

注意:将第三个参数设置为true将增强您的代码。

请参阅第二个示例:in_array() strict checking

答案 1 :(得分:1)

替换

 if(in_array($existencea, $formatfilea && $existenceb, $formatfileb && $existencec, $formatfilec && $existenced, $formatfiled) === true){

 if (in_array($existencea, $formatfilea) && in_array($existenceb, $formatfileb) && in_array($existencec, $formatfilec) && in_array($existenced, $formatfiled)) {