php - "Warning: in_array() expects at most 3 parameters, 5 given"尝试上传文件时

标签 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')";

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

最佳答案

你应该引用in_array()的语法.它至少接受两个参数。

 in_array(param_1, param_2, param_3);

第一个是您要查找的那个。

第二个是数组。

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

你只需要这样写你的 if 语句:

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

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

引用第二个例子:in_array() strict checking

关于php - "Warning: in_array() expects at most 3 parameters, 5 given"尝试上传文件时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38417676/

相关文章:

php - 将多个数组交织成一个数组

php - 通配符 SSL 子域转发

MySQL 控制台在导入巨大的 SQL 文件时速度很慢

javascript - jquery 检查单选框是否在价格计算器上被选中

php - MySQL 行位置

php - 上传图片的更好方法?

php - 用PHP和mySql连接J2ME

Mysql,显示谁选择了和没有选择退出巴士服务

forms - 使用 Elm 提交表单而不跟踪字段值

php - 为了使此注册表单发挥作用,我缺少什么?