2016-05-28 3 views
0

私のエラーは確実ではありません。私のHTMLではフォームがあり、投稿をクリックするとエラーが表示されます。私の接続は正常に機能していますが、このコードイマイチが計画mySQLデータベースがフォームから更新されない

$query = "INSERT INTO users(username,password) "; 
    $query.= "VALUES('$username','$password')"; 
    $result = mysqli_query($connection, $query); 

    if(!$result){ // if not true, put query failed 
     die('Query Failed' . mysqli_error($connection)); 
    } 
    } 
+0

どのようなエラーが表示されますか? – Mureinik

+0

最初に "接続されています"というメッセージが表示されます。エラーが発生しました。 "接続されていますか?" PRIMARYのキーが0です。 –

+0

これは、あなたの挿入に違反しています。おそらく、あなたの 'username'カラム。その列に値を重複させることはできません。 – gmiley

答えて

0

として働いてここではこれで何か問題がある場合は、何らかの理由でそれは実際に私が疑問に思って

<?php 

    if(isset($_POST['submit'])){ 
     $username = $_POST['username']; 
     $password = $_POST['password']; 
     $connection = mysqli_connect('localhost', 'root', '', 'loginapp'); 

     if($connection){ 
      echo "we are connected"; 
     } 
     else{ 
      die("connection failed"); 
     } 

     $query = "INSERT INTO users(username,password) "; 
     $query.= "VALUES('$username','$password')"; 
     $result = mysqli_query($connection, $query); 

     if(!$result){ // if not true, put query failed 
      die('Query Failed' .mysqli_error($connection)); 
     } 
    } 

    ?> 

データベースに追加されませんあるいは、なぜあなたのクエリを条件文の中に入れてそこから取り出したらいいですか?

<?php 
     if($username && $password){ 
      $query = "INSERT INTO users(username, password) "; 
      $query .= "VALUES('" . $username . "', '" . $password . "')"; 
      $result = mysqli_query($connection,$query); 

      if(!$result) { 
       die('Query Failed' .mysqli_error($connection)); 
      }    
     } 
+0

これは 'if(isset($ _ POST ['submit']))'ループのブレースです。 – Sandeep

+0

@Sandeep OK ...私はちょうどそれが誤植であると思った... – Poiz

+0

私はそれがエラーではないと思う。 –

2

あなたのテーブルに重複したエントリを挿入しようとしています。おそらくusername列。これを回避することはできますが、まだテーブルにないusernameの値を入力するか、テーブルからレコードを削除して再挿入することができます。あなたの質問にusersテーブルの定義を含めると、より具体的になることができますが、それはあなたが持っている基本的な問題です。

あなたのテーブルは主キーとしてid列を入力し、あなたはこのように、あなたの挿入に新しい値を指定しない数値で定義されている場合:

insert into users (id, username, password) values (1, 'joeuser', 'password'); 

代わりに、あなたはあなたの中に持っている何を質問:

insert into users (username, password) values ('joeuser', 'password'); 

デフォルトの挿入値としてnullまたは0を持つことになりますどちらか挿入されたレコード。挿入が実行されるたびに同じ値がid列に挿入されます。これにより、重大な値のエラーが発生します。 auto-incrementはいつでもあなたが挿入を実行し、それがデフォルト値として使用可能な次の整数を使用しますidの値を指定しないということを伝えるようid列を定義し、その周りを取得するには

他のアプローチは、各INSERT文の実行にidの新しい値を指定することですので、のように:このような表について

insert into users (id, username, password) values (1, 'joeuser', 'password'); 

insert into users (id, username, password) values (2, 'daveuser', 'password'); 

insert into users (id, username, password) values (3, 'janeuser', 'password'); 

、自動インクリメントを使用するための最良の方法です行く。

+0

jeez。私は文字通り私が作ったデータベース全体を削除し、もう一度それを作った。今回は、IDの自動インクリメントをオンにします。どのようにして問題を解決したのでしょうか? –

+0

整数列がある場合は、挿入に値を指定しない場合は、値を指定しないか、デフォルト(おそらく0)が毎回挿入されます。列が自動増分であることを指定すると、値が指定されていない場合は、列に次の増分値が追加されます。 – gmiley

+0

もう少し説明をするために私の答えを更新しました。 – gmiley

関連する問題