2016-05-01 8 views
0

私はMacでMAMPを実行し、phpMyAdminでデータベースにアクセスしてPHPとSQLを学習しています。私のMySQLデータベースが空の行を追加するのはなぜですか?

新しいユーザーをテーブルに追加するための1つのPHPスクリプトを作成しました。入力したデータをテーブル(ログイン)と比較し、1つはアカウントを閉じるためのものです。私はPHPの基本に慣れているので、すべてのスクリプトは非常に基本的であり、データはまったく消毒されません。

私は、アカウント作成(データの挿入)のスクリプトを実行した後、スクリプトの実行後数秒後に、新しい行がid(これはautoに設定されています)インクリメント)、他のデータはありません。

私がちょうど不足しているのは、この理由がMySQLで明白であるかどうかだけです。

次は、アカウントの作成スクリプトです:

<?php 
//Get values from HTML form 
$varUsername = $_POST['username']; 
$varPassword = $_POST['password']; 
$varPasswordHash = password_hash($varPassword, PASSWORD_DEFAULT); 

//Establish connection to database 
$server = "localhost"; 
$username = "root"; 
$password = "root"; 
$database = "members"; 

$connection = mysqli_connect($server, $username, $password, $database); 
if(!$connection) 
{ 
    die("Connection failed: " . mysqli_connect_error()); 
} 

//Send data to database 
$action = "INSERT INTO details (USERNAME, PASSWORD) VALUES ('$varUsername', '$varPassword')"; 

if(mysqli_query($connection, $action)) 
{ 
    echo 'Account created.'; 
} 
else 
{ 
    echo 'Account creation failed: ' . mysqli_error($connection); 
} 

mysqli_close($connection); //End connection to database 
?> 

とそれに行くためのHTMLフォーム:

<html> 
<body> 
    <form action="sign_up.php" method="post"> 
     <input type="text" name="username"> 
     <input type="text" name="password"> 
     <input type="submit"> 
    </form> 
</body> 
</html> 
+1

あなたはそのスクリプトを私たちと共有できますか? –

+1

いずれかのテーブルにトリガーがあるか、余分なレコードを挿入しているループロジックがあります。どのようにテリバードを使用していても、コードを共有してください。 – Mihai

+0

デバッグを試しましたか?あなたのHTMLコードも表示してください。最初の行でprint_r($ _ POST)を試して、POSTデータが何であるかを確認してください。私はあなたが希望のPOSTデータを取得していないと思う。 –

答えて

2

私は...今

を推測を作ってるんですスクリプト自体に余分なif文を追加します。このように:あなたはsign_up.php自体を訪問し、データベース化され、新たなエントリがある気づいたら

if (isset($_POST['submit-form'])) { 
    // All the above to insert the data into the script... 
} 

それは理にかなって。

if文を動作させるには、HTMLを少し修正する必要があります。

ただ、送信ボタンにname='submit-form'を追加します。<input type="submit" name="submit-form">

これは、スクリプトがより完全になります。

また、空のフォームを送信した後に空の行が追加されていることを読んだだけで、少し更新されています。

あなたは何を思い、フィールドがで満たされている天気を確認することができます

別のif文:

if (empty($_POST['username'])) { 
    echo 'Please enter your username...'; 
} else 
if (...) 
0

POSTされた値は、このように空のフォーム結果を提出、それらに何かを持っている場合は確認されません。 IDだけのDBの空のエントリ。

関連する問題