2017-01-05 28 views
1

なぜ私のイメージアップロードスクリプトにデータが入力されていないのかわかりません。これは私が使っていたのと同じスクリプトですが、最近はif(isset))ステートメントに追加して、特定のチェックボックスがチェックされているかどうかを確認しました。イメージはサーバーにアップロードされていますが、データベース表は空のままです。すべての手がかりは?私は何の誤りもありません。データがデータベースに入力されない

if(isset($_POST['submit'])) { 
    $count = count($_FILES['img_file']['name']); 

    for($i = 0; $i < $count; ++$i){ 
     $img_name = $_POST['img_name']; 
     $img_name = str_replace(' ', '_', $img_name); 
     $img_album = $_POST['img_album']; 
     $img_album = str_replace(' ', '_', $img_album); 
     $img_photographer = $_POST['img_photographer']; 
     $img_location = $_POST['img_location']; 
     if(isset($_POST['horror'])) { $horror = "1"; } else { $horror = "0"; } 
     if(isset($_POST['occult'])) { $occult = "1"; } else { $occult = "0"; } 
     if(isset($_POST['goth'])) { $goth = "1"; } else { $goth = "0"; } 
     if(isset($_POST['industrial'])) { $industrial = "1"; } else { $industrial = "0"; } 
     if(isset($_POST['fashion'])) { $fashion = "1"; } else { $fashion = "0"; } 
     if(isset($_POST['fetish'])) { $fetish = "1"; } else { $fetish = "0"; } 
     if(isset($_POST['avante-garde'])) { $avanteGarde = "1"; } else { $avanteGarde = "0"; } 
     if(isset($_POST['cosplay'])) { $cosplay = "1"; } else { $cosplay = "0"; } 
     if(isset($_POST['nude'])) { $nude = "1"; } else { $nude = "0"; } 
     $file_name = $_FILES["img_file"]["name"][$i]; 
     $file_ext = end((explode(".", $file_name))); 
     $target = $_SERVER['DOCUMENT_ROOT']."/gallery/"; 
     $img_rename = $img_name . '_' . $i . '.' . $file_ext; 
     $target = $target . $img_rename; 
     if(move_uploaded_file($_FILES['img_file']['tmp_name'][$i], $target)){ 
      mysqli_query($conn, "INSERT INTO gallery_img (img_name, img_album, img_photographer, img_location, horror, occult, goth, industrial, fashion, fetish, avante-garde, cosplay, nude, file_location) VALUES ('$img_name', '$img_album', '$img_photographer', '$img_location', '$horror', '$occult', '$goth', '$industrial', '$fashion', '$fetish', '$avanteGarde', '$cosplay', '$nude', '$img_rename')") ; 
      echo '<div class="alert alert-success margin-top">Image "'.$file_name.'" successfully uploaded and renamed to '.$img_rename.'.</div>'; 
     }else { 
      echo '<div class="alert alert-danger margin-top">Sorry, there was a problem uploading your images.</div>'; 
     } 
    } 
} 
+2

あなたがドン」コード内のエラーをチェックしないでください。だからあなたはあなたのエラーが何であるかを知らないのです。 –

+0

このサイトではエラーチェックが有効になっており、構文チェッカーで実行しました。エラーはありません。 –

+2

どちらもmysqliエラーを表示しませんmysqli_error($ conn) – nogad

答えて

2

明らかに、クエリのエラーをチェックしていませんでした。

いずれかの列のハイフンに注意してください。他の人がそれを見て、それについてあなたに知らせるために右にスクロールしていないかもしれないようです。

  • avante-garde

MySQLはそのよう解釈される:

  • avanteマイナスgarde、あなたが数学をやってみたかった思考。他の列のようにアンダースコアを使用して名前を変更するか、ダニでラップするかのいずれかです。

すなわち:ところで

`avante-garde` 

、(と私は批判していませんよ)。その言葉は実際には"avant-garde"と綴られているので、実際には実際の名前であることを確認してください。どちらの場合でも、それはあなたに失敗したでしょう。

  • 注:私は本当にそれはあなたの部分のタイプミスではなかったことを願って、あなたが/後に、すべてのアンダースコアを使用していたことをしています。

条件文のクエリでエラーチェックを使用することは役に立ちました。

I.e.それに変数を割り当てます。その後、

$query = mysqli_query($conn, "INSERT INTO gallery_img (...) VALUES (...)"); 

if($query){ 
    echo "Success"; 
} else { 
echo "Error: " . mysqli_error($conn); 
} 

もう一つ。列の種類が正しいか正しい長さであることを確認してください。長さがデータを格納するのに十分な長さでない場合、MySQLは静かに失敗する可能性があります。

準備文を使用してください。あなたのコードは現在、SQLインジェクションにオープンしています。

  • https://en.wikipedia.org/wiki/Prepared_statement

    • 脚注:

      あなたは、いくつか/すべてのそれらのif{...} else{...}文の代わりに三項演算子を使用してに見てみたいことがあり、それに加えて多くの短いコードです。マニュアルから

      例:もちろん

      $action = (empty($_POST['action'])) ? 'default' : $_POST['action']; 
      

      、あなたはissetemptyを置き換えることができます。


      ありを注目に値するものがあり、それは(も)の実行からクエリを防ぐことができ、そしてそれは、クエリのためにその場所です。

      あなたは以下の条件の中にあります。アップロードが失敗した場合は、クエリも失敗します。

      if(move_uploaded_file($_FILES['img_file']['tmp_name'][$i], $target)){ 
          mysqli_query($conn, "INSERT INTO gallery_img (...) VALUES (...)"); 
          echo '<div class="...">Success...</div>'; 
      }else { 
          echo '<div class="...">Error...</div>'; 
      } 
      

      アップロードが失敗し、次のいずれかの1つかもしれない理由をいくつか考えられる理由:

      • ファイル(複数可)された(ある)
      • 権限がために設定されていないが大きすぎます書き込み先のフォルダ
      • ファイルのタイプミス(S)(S)の各入力(S)
      • アップロードエラーコード/メッセージのためのその他の

      参考:

    +0

    Ah。私はそれがそのように解釈されることに気がつきませんでした。それで、私の他の人たちが代わりに「avanteGarde」であったのですが、私はそれを捕まえましたが、あなたが指摘した場所に失敗しました。私は間違いなくあなたのヒントをいくつか変更するつもりです。 –

    +1

    @JesseElserあなたは一番歓迎です。Jesse、喜んで助けになりました。 *歓声* –

    +0

    @JesseElserハイフンに関する追加の注意。これはPHPの変数にも当てはまります。 Ie: '$ a-b' - Phpはそれを数学的演算としてもintepretします。心に留めておきます ;-) –

    関連する問題