我尝试在表单中使用一些文件输入来上传几种不同的文件类型,当单击提交按钮时,多个文件存储在一个 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/