2016-04-24 10 views
-1

私はいくつかのファイルアップロードPHPコードをコーディングして、複数のファイルをアップロードし、ループで名前を変更し、フォームにデータを送信します。配列からファイル名を引っ張ってデータベースに挿入しようとしています

私は今アップロードされたファイル名を取り出してデータベースに挿入しようとしていますが、フォーム完成時にそれらをエコーするのに苦労しています。

私は新しいファイル名を手に入れて、データベースにデータを手伝ってもらえますか?

ここは私のコードの一部です。

<?php 
if(isset($_POST['submit'])){ 

// Variables for date&Time logs 
$dateLog = date("y-m-d"); // DATE OF ADDITION 
$timeLog = date("H:i:s", time() - 3600); // TIME OF ADDITION 

// INSERT QUERY 
$sql="INSERT INTO $table1 (firstname, lastname, companyname, phone, email, name, make, serial, catagory, price, location, description, sold, operational, year, clear, rip, version, service, dock, loading, available, extras, dateadded, featured) 
VALUES 
('$_POST[firstname]', 
'$_POST[lastname]', 
'$_POST[companyname]', 
'$_POST[phone]', 
'$_POST[email]', 
'$_POST[name]', 
'$_POST[make]', 
'$_POST[serial]', 
'$_POST[catagory]', 
'$_POST[price]', 
'$_POST[location]', 
'$_POST[description]', 
'No', 
'$_POST[operational]', 
'$_POST[year]', 
'$_POST[clear]', 
'$_POST[rip]', 
'$_POST[version]', 
'$_POST[service]', 
'$_POST[dock]', 
'$_POST[loading]', 
'$_POST[available]', 
'$_POST[extras]', 
'$dateLog', 
'No')"; 


$query = mysql_query($sql) or die("Cannot query the database.<br>" . mysql_error()); 

// start of image upload 
$insert_id = mysql_insert_id() or die("Unable to get insert id for image name.<br>" . mysql_error()); 

extract($_POST); 
    $error=array(); 
    $extension=array("jpeg","jpg","png","gif"); 
    foreach($_FILES["files"]["tmp_name"] as $key=>$tmp_name) 
      { 
       $file_name=$_FILES["files"]["name"][$key]; 
       $file_tmp=$_FILES["files"]["tmp_name"][$key]; 
       $ext=pathinfo($file_name,PATHINFO_EXTENSION); 
       if(in_array($ext,$extension)) 
       { 
        if(!file_exists("../images/listings/".$file_name)) 
        { 
         $filename=basename($file_name,$ext); 
         $newFileName=$insert_id."_".mt_rand(1, 99999).".".$ext; 
         move_uploaded_file($file_tmp=$_FILES["files"]["tmp_name"][$key],"../images/listings/".$newFileName); 
        } 
        else 
        { 
         $filename=basename($file_name,$ext); 
         $newFileName=$filename.mt_rand(1, 99999).".".$ext; 
         move_uploaded_file($file_tmp=$_FILES["files"]["tmp_name"][$key],"../images/listings/".$newFileName); 
        } 
       } 
       else 
       { 
        array_push($error,"$file_name, "); 
       } 
      } 
// end of image upload 
//echo '<p>This item was added successfully</p>'; 
    print_r($newFileName); 

} 
?> 

と私のフォームアイテム。

1: Upload : <input type="file" name="files[]"/><br /> 
2: Upload : <input type="file" name="files[]"/><br /> 
3: Upload : <input type="file" name="files[]"/><br /> 
4: Upload : <input type="file" name="files[]"/><br /> 

乾杯PHP文字列とアレイにおいて

+2

**警告**:これらのパラメータは[適切にエスケープされていない]ため、恐ろしく不安です(http://bobby-tables.com/php)。 '$ _POST'データをクエリに直接入れないでください。巨大な[SQLインジェクションのバグ](http://bobby-tables.com/)が作成されます。 mysql_queryは廃止されたインターフェースなので、使用しないでください。PHPから削除されています。 PDOのような現代的な代替品は学ぶのが難しくありません(http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/)。 [PHP The Right Way](http://www.phptherightway.com/)のようなガイドはベストプラクティスを説明しています。 – tadman

+0

私は現在、廃止されたすべてのコードをPDOに変更しようとしていますが、この場合、コーディングはローカルサーバーに保存され、一般に公開されることはありません。 ;) –

+0

これは放射能コードなので、「うまくいけば」という言葉がここにあります。 – tadman

答えて

1

、{$ _POST [ 'フィールドを']}使用..

$sql="INSERT INTO $table1 (firstname, lastname, companyname, phone, email, name, make, serial, catagory, price, location, description, sold, operational, year, clear, rip, version, service, dock, loading, available, extras, dateadded, featured) 
VALUES 
('{$_POST['firstname']}', 
'{$_POST['lastname']}' 
.... continue 

をしようとすると、ISSET($ _ POSTかどうかを確認['field'])は良い考えです。

関連する問題