2017-06-02 23 views
0

私は映画を借りるためにサイトを構築する必要がある学校プロジェクトに取り組んでいます。エラーを取得引数がありません

イム:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE idFilm = NULL)' at line 1' in /home/ubuntu/workspace/classes/video.php on line 334

(!) PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE idFilm = NULL)' at line 1 in /home/ubuntu/workspace/classes/video.php on line 334

アイデアは、あなたが新しい映画を作成して、1つのまたは複数のジャンルを追加することができるということです。私は映画にジャンルを結びつけることに失敗しました。

だから私のコードは次のとおりです。

<?php 
    include('security.php'); 
     $genre = $video->getAllGenre(); 
    if(isset($_POST['submit'])){ 
     $error = ""; 
     //var_dump($_POST); 
     $target_dir = $_SERVER['DOCUMENT_ROOT'].'/images/covers/'; 
     $temp = explode(".", $_FILES["file"]["name"]); 
     $fileName = $video->generateCoverName() .'.'. end($temp); 
     $target_file = $target_dir . $fileName; 
     //echo('Target file: '.$target_file); 
     $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
     $check = getimagesize($_FILES["file"]["tmp_name"]); 
     if($check == false) { 
      $error = "Bestand is geen foto."; 
     } 
     if ($_FILES["file"]["size"] > 50000000) { 
      $error = "Sorry, bestand is te groot."; 
     } 
     if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" 
      && $imageFileType != "gif") { 
      $error = "Sorry, alleen jpg, png, jpeg en gif zijn toegestaan."; 
     } 
     if (!$error) { 
      if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) { 
       //echo "The file ". $fileName. " has been uploaded."; 
       $video->genreToFilm($_POST['idFilm'], $_POST['idGenre']); 
       $video->newVideo($_POST['titel'], $_POST['aantal'], $fileName, $_POST['omschrijving'], $_POST['prijs']); 
      } else { 
       echo("Sorry, er was een probleem met het uploaden van uw bestand."); 
      } 
     } else { 
      print('<div class="alert alert-info fade-out">'.$error.'</div>'); 
     } 

    } 
?> 
<div class="row"> 
    <div class="col-xs-12 col-sm-12 col-md-12 loginborder"> 
     <form role="form" method="post" action="" autocomplete="off" enctype="multipart/form-data"> 
      <h2 class="loginhead">Film toevoegen</h2> 
      <hr> 
       <div class="registrationform"> 
       <div class='row'> 
        <div class="form-group col-xs-12 col-sm-12 col-md-6"> 
         <p>Titel:</p> 
         <input type="text" name="titel" id="titel" class="form-control input-lg" required value="<?php if(isset($error)){ print($_POST['titel']); } ?>" tabindex="1"> 
        </div> 
        <div class="form-group col-12 col-xs-12 col-sm-12 col-md-6"> 
         <p>Upload een coverfoto:</p> 
         <input type="file" name="file" id="file" required> 
        </div> 
       </div> 
       <div class='row'> 
        <div class="omschrijving form-group col-xs-12 col-sm-12 col-md-6"> 
         <p>Omschrijving:</p> 
         <textarea style="resize: none;" name="omschrijving" rows="12" cols="50" placeholder="Omschrijving van de film..." required class="form-control"><?php if(isset($error)){ print($_POST['omschrijving']); }?></textarea> 
        </div> 
        <div class="form-group col-xs-12 col-sm-12 col-md-3"> 
         <p>Aantal:</p> 
         <input type="number" name="aantal" id="aantal" class="form-control input-lg" min="0" max="1000" step="1" required value="<?php if(isset($error)){ print($_POST['aantal']); } ?>" tabindex="1"> 
        </div> 
        <div class="form-group col-xs-12 col-sm-12 col-md-3"> 
         <p>Prijs:</p> 
         <input type="number" name="prijs" id="prijs" class="form-control input-lg" min="0" max="9999.99" step="0.01" required value="<?php if(isset($error)){ print($_POST['aantal']); } ?>" tabindex="1"> 
        </div> 
        <div class="form-group col-xs-12 col-sm-12 col-md-2"> 
         <p>Genre 1:</p> 
         <select name="genre1" class="form-control input-lg"> 
          <?php foreach ($genre as $gen) { 
           print(
             '<option value='.$gen['idGenre'].'>'.$gen['genre'].'</option>'); 
          } ?> 
         </select> 
        </div> 
        <div class="form-group col-xs-12 col-sm-12 col-md-2"> 
         <p>Genre 2:</p> 
         <select name="genre2" class="form-control input-lg"> 
          <?php foreach ($genre as $gen) { 
           print('<option value='.$gen['idGenre'].'>'.$gen['genre'].'</option>'); 
          } ?> 
         </select> 
        </div> 
        <div class="form-group col-xs-12 col-sm-12 col-md-2"> 
         <p>Genre 3:</p> 
         <select name="genre3" class="form-control input-lg"> 
          <?php foreach ($genre as $gen) { 
           print('<option value='.$gen['idGenre'].'>'.$gen['genre'].'</option>'); 
          } ?> 
         </select> 
        </div> 
       </div> 
       <div class="row"> 
        <div class="form-group col-xs-12 col-sm-12 col-md-2"> 
         <p>Acteur 1:</p> 
         <input type="text" name="acteurs" id="acteur1" class="form-control input-lg" min="0" max="1000" step="1" value="<?php if(isset($error)){ print($_POST['acteurs']); } ?>" tabindex="1"> 
        </div> 
        <div class="form-group col-xs-12 col-sm-12 col-md-2"> 
         <p>Acteur 2:</p> 
         <input type="text" name="acteur2" id="acteur2" class="form-control input-lg" min="0" max="1000" step="1" value="<?php if(isset($error)){ print($_POST['acteurs']); } ?>" tabindex="1"> 
        </div> 
        <div class="form-group col-xs-12 col-sm-12 col-md-2"> 
         <p>Acteur 3:</p> 
         <input type="text" name="acteur3" id="acteur3" class="form-control input-lg" min="0" max="1000" step="1" value="<?php if(isset($error)){ print($_POST['acteurs']); } ?>" tabindex="1"> 
        </div> 
        <div class="form-group col-xs-12 col-sm-12 col-md-2"> 
         <p>Acteur 4:</p> 
         <input type="text" name="acteur4" id="acteur4" class="form-control input-lg" min="0" max="1000" step="1" value="<?php if(isset($error)){ print($_POST['acteurs']); } ?>" tabindex="1"> 
        </div> 
        <div class="form-group col-xs-12 col-sm-12 col-md-2"> 
         <p>Acteur 5:</p> 
         <input type="text" name="acteur5" id="acteur5" class="form-control input-lg" min="0" max="1000" step="1" value="<?php if(isset($error)){ print($_POST['acteurs']); } ?>" tabindex="1"> 
        </div> 
        <div class="submitVideoToevoegen col-xs-12 col-md-2"> 
         <input type="submit" name="submit" value="Verstuur" class="btn btn-lg " tabindex="5"> 
        </div> 
       </div> 
      </div> 
     </form> 
    </div> 
</div> 

とクラスのコードは次のとおりです。あなたがここに列の先が欠けて再

public function genreToFilm($idFilm, $idGenre){ 
     try{ 
      $stmt = $this->_db->prepare('INSERT INTO FilmGenre 
             VALUES(:idFilm, :idGenre WHERE idFilm = :idFilm)'); 
      if($stmt->execute(array(':idGenre' => $idGenre, 
            ':idFilm' => $idFilm))){ 
       return true; 
      } else { 
       return false; 
      } 

     } catch (PDOExeption $e) { 
      echo '<p class="bg-danger">'.$e->getMessage().'</p>'; 
     } 
    } 
+0

あなたidFilm値がありませんので、 'INSERT INTO..WHERE'はありません –

+1

を設定しないでヌルです。代わりに 'UPDATE'クエリを実行することを意味しますか?また、そのまわりのかっこは間違っています。 – Qirel

+0

新しい行を作成しようとしているのか、既存の行を修正しようとしていますか? – RiggsFolly

答えて

2

。私はPdoメソッドを熟知していませんが、where節がvaluesステートメント内にあるとは思いません。

$this->_db->prepare('INSERT INTO FilmGenre VALUES(:idFilm, :idGenre WHERE idFilm = : 

あなたはこれを行う必要があります。

$this->_db->prepare('INSERT INTO FilmGenre (idFilmColumn, idGenreColumn) VALUES(:idFilm, :idGenreColumn)') ; 
+0

OPはinsert文を必要としません。おそらくUpdateステートメントが実行します。 – Akintunde007

+0

「INSERT」クエリであっても、カラムを指定する必要はありません。マニュアルを見ると、https://dev.mysql.com/doc/refman/5.7/en /insert.html – Qirel

+0

@Qirel彼は単純なリンクテーブルの行を作成しようとしているように見えます。だから多分それは挿入物であると思われる – RiggsFolly

関連する問題