2016-03-26 2 views
1

で述べエコーを実行します。INSERTクエリがデータを挿入していないけど、私は次のコードスニペットを持っているINSERTが成功

$get_data = mysqli_query ($connect, "SELECT * FROM users WHERE username = '$username'"); 
    $row2 = mysqli_fetch_assoc ($get_data); 
      $age = $row2['age']; 

$get_data2 = mysqli_query ($connect, "SELECT * FROM user_bio WHERE username = '$username'"); 
    $row3 = mysqli_fetch_assoc ($get_data2); 
      $bio = $row3['about_me']; 
      $studying = $row3['studying']; 
      $lang = $row3['language']; 
      $rel_status = $row3['relationship_status']; 

$about_me = htmlentities(trim(strip_tags(@$_POST['biotextarea']))); 
     $new_studying = htmlentities(trim(strip_tags(@$_POST['studying']))); 
     $new_lang = htmlentities(trim(strip_tags(@$_POST['lang']))); 
     $new_rel = htmlentities(strip_tags(@$_POST['rel'])); 

     if(isset($_POST['update_data'])){ 
      // need to check if the username has data already in the db, if so, then we update the data, otherwise we insert data. 
       $get_bio = mysqli_query($connect, "SELECT * FROM user_bio WHERE username ='$username'"); 
       $row_returned = mysqli_num_rows($get_bio); 

       if ($row_returned == 0){ 
        $insert_query = mysqli_query ($connect, "INSERT INTO user_bio (id, age, studying, language, relationship_status, username, about_me) 
                VALUES ('', '$age','$new_studying','$new_lang','$new_rel', '$username', '$about_me'");               
         echo " <div class='details_updated'> 
            <p> Details added successfully! </p> 
           </div>"; 
       } else {  
        $update_details_query = mysqli_query ($connect, "UPDATE user_bio SET studying ='$new_studying', language ='$new_lang', 
                   relationship_status = '$new_rel', about_me = '$about_me' WHERE username ='$username'"); 
         echo " <div class='details_updated'> 
            <p> Details updated successfully! </p> 
           </div>"; 
       } 
      } 

アイデアは、ユーザーが自分のbioINSERTUPDATEのいずれかを使用してクエリをアップロードするときということですその行のために既に存在する場合に基づいてusername。私はコナーとしてログインし、コナーは、彼らのバイオを編集することができaccount_settings_bio.php、に行けば、UPDATEクエリ(else文が)ので、そこに実行します

id: 1 
age: 30 
studying: Business 
language: English 
relationship_status: Single 
username: conor 
about_me: This is conor's bio. 

:たとえば、私は手動でユーザ名Conorのために挿入された1行を持っていますdbのユーザ名conorの行です。ただし、Aliceとしてログインしてaccount_settings_bio.phpにアクセスすると、user_bioテーブルにaliceのデータが存在しないため、INSERTクエリが実行されます。それは、エコーINSERTクエリが<p> Details added successfully! </p>すなわち成功したときに発生したメッセージだ、私はすべての詳細を追加し、[送信]をクリックし、

さて、問題は、私はアリスとしてログインしていたときに、ということである、と私はaccount_settings_bio.phpに行きます - 新しい行はデータベースに追加されません。

答えて

0

SQLエラーが発生したときにmysqliが例外をスローする設定が表示されません。

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 

それが設定されていない場合は、mysqliのは、エラーをスローしません、そしてコードは、SQLステートメントが成功したかどうかを確認するためのチェックを行う必要があります。この後

$insert_query = mysqli_query ($connect, "INSERT INTO 

あなたは$insert_queryは、文の実行が成功したかどうかを知るためにTRUEと評価されたかどうかを確認する必要があると思います。

それ以外の場合、コードは指の隅にピーピーな指を付けて、エビル様式のDr. "私はすべてが計画に入ったと仮定します。

関連する問題