2016-03-30 20 views
1

ユーザーあたりレコードが1つしかないフォームがあります。ユーザーが以前に投稿したかどうかを判断するために使用している条件は、何らかの理由でデータベースに書き込んでいないということです。どんな助けでも大歓迎です。データベースで値が更新されない

ここでは、コードです:

<?php 

    $user_id = $_SESSION['user_id']; 
    $anthem1 = null; 
    $cointoss2 = null; 
    $firstscore3 = null; 

    //$query 

    $query = "SELECT * "; 
    $query .= "FROM mypicks "; 
    $query .= "WHERE user_id = {$user_id} "; 
    $result = mysqli_query($connection, $query); 

     if (isset($result)) { 

      //existing submission - this is breaking it  
      if (isset($_POST['submit'])) { 


       if (isset($_POST['anthem1'])) { 
        $anthem1 = $_POST['anthem1']; 
       }  

       if (isset($_POST['cointoss2'])) { 
        $cointoss2 = $_POST['cointoss2']; 
       }  

       if (isset($_POST['firstscore3'])) { 
        $firstscore3 = $_POST['firstscore3']; 
       } 

       $query = "UPDATE mypicks SET"; 
       $query .= "anthem1 = '{$anthem1}', "; 
       $query .= "cointoss2 = '{$cointoss2}', "; 
       $query .= "firstscore3 = '{$firstscore3}' "; 
       $query .= "WHERE user_id = {$user_id} "; 
       $result = mysqli_query($connection, $query); 
      } 

      }else{ 

      //new submission  
      if (isset($_POST['submit'])) { 


       if (isset($_POST['anthem1'])) { 
        $anthem1 = $_POST['anthem1']; 
       }  

       if (isset($_POST['cointoss2'])) { 
        $cointoss2 = $_POST['cointoss2']; 
       }  

       if (isset($_POST['firstscore3'])) { 
        $firstscore3 = $_POST['firstscore3']; 
       } 

       $query = "INSERT INTO mypicks ("; 
       $query .= " user_id, anthem1, cointoss2, firstscore3"; 
       $query .= ") VALUES ("; 
       $query .= " '{$user_id}', '{$anthem1}', '{$cointoss2}', '{$firstscore3}'"; 
       $query .= ")"; 
       $result = mysqli_query($connection, $query); 

       } 
      } 
?> 
+0

は、すべてのフィールドが埋められたいだけでphpmyadminのか、何のUIを通じてクエリをテストすることによって、将来的にこのようなエラーを防ぐことができ、

第三の更新に関するあなたの質問に関連していないのか? issetがfalseを返すのはどうですか? – tanaydin

+0

"SET"の後に空白を追加しようとしましたか?構文エラーのようです –

答えて

0

まず、あなたが言うことv7d8dpo4に構築し、SET

  $query = "UPDATE mypicks SET";// Concats as SETanthem1 
      $query .= "anthem1 = '{$anthem1}', "; 
      $query .= "cointoss2 = '{$cointoss2}', "; 
      $query .= "firstscore3 = '{$firstscore3}' "; 
      $query .= "WHERE user_id = {$user_id} "; 

秒後にスペースが不足している、あなたは$ result-> NUM_ROWSのような何かをしたいか、あなたが好きな場合はフェッチとよrowCount。しかし、それは、あなたが

0

https://secure.php.net/manual/en/mysqli.query.phpによると:

失敗した場合にFALSEを返します。成功したSELECT、SHOW、DESCRIBEまたはEXPLAINクエリの場合、mysqli_query()はmysqli_resultオブジェクトを返します。他の成功したクエリの場合、mysqli_query()はTRUEを返します。

したがってisset($result)は常に真です。 $resultが空でないかどうかを確認するには、$result -> num_rowsを使用してください。

関連する問題