2017-12-18 13 views
0
<?php 
include "config.php"; 
if(isset($_FILES['berkas'])){ 
    foreach ($_FILES['berkas']['name'] as $file=>$name){ 
     $filename = date('Ymd-His',time()).mt-rand().'-'.$name; 
     try{ 
      if(move_uploaded_file($_FILES['berkas']['tmp_name'][$file], 'uploads/'.$filename));{ 
       $stmt= $db->prepare("insert into multipleload values('',?)"); 
       $stmt ->bindParam(1,$filename); 
       $stmt->execute(); 

      } 
     } catch (Exception $e){ 
      echo $e; 
     } 

    } 
} 
?> 

エラーがライン3私はすでに試した 上にある場合(IS_ARRAY()){}が、それはエラーメッセージを停止しません。PHP修正する方法「foreachのために供給無効な引数を()」

私は文書提出PHPファイルbtwを作成しようとしています。私は以前の投稿を見て、本当に配列を取得していないことがわかっています。

+0

'$ _FILES ['berkas'] ['name']'は何を返しますか? –

答えて

1

foreachはループスルーする変数がarrayであると想定しています。 と思われます。$_FILES['berkas']['name']は配列ではないので、ファイル名の文字列を表しています。あなたはこの

foreach ($_FILES['berkas'] as $file => $name){ 
    // your code here 
} 
1

のようにそれを使用する必要があり、それだ、次のよう$_FILESの構造があるので:だからあなたはあなたがに反対として配列を供給している_FILESを反復処理しようとしているとき

$_FILES[fieldname] => array(
    [name] => array(/* these arrays are the size you expect */) 
    [type] => array(/* these arrays are the size you expect */) 
    [tmp_name] => array(/* these arrays are the size you expect */) 
    [error] => array(/* these arrays are the size you expect */) 
    [size] => array(/* these arrays are the size you expect */) 
); 

連想配列。代わりに、あなたのforeachのは、次のようになります。あなたは上だけ名前を反復しようとしている場合、あなたは

foreach ($_FILES['berkas']['name'] as $name) { 
    // if $type is 'name', do something 
} 
0

を行うことができます

foreach ($_FILES['berkas'] as $type=>$value) { 
    // if $type is 'name', do something 
} 

おそらく、$ _FILESをループにしたい好きなスーパーグローバルそう:$datahttp://php.net/manual/en/features.file-upload.post-method.phpを参照してください。キーの名前 '、「タイプ」、「サイズ」などを含む配列となります

foreach ($_FILES as $file => $data) { 

この仕組みの詳細については、

関連する問題