2016-11-05 6 views
0

こんにちは私は000webhostでテーブルを設定しました。 ID、名前、ユーザー名、年齢、パスワードの列を設定しました。何らかの理由で、私はレジスタのコードを実行し、エラーが何であるかわからないときに、ユーザー名がテーブルに表示されません。 Register.phpのコードは次のとおりです。登録/ログインNotworking android/PHP

<?php 
$con = mysqli_connect("*****", "****", "*****", "****"); 

$name = $_POST["name"]; 
$age = $_POST["age"]; 
$username = $_POST["username"]; 
$password = $_POST["password"]; 

$statement = mysqli_prepare($con, "INSERT INTO user (name, username, age, password) VALUES (?, ?, ?, ?)"); 
mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password); 
mysqli_stmt_execute($statement); 

$response = array(); 
$response["success"] = true; 

echo json_encode($response); 
?> 
+1

'name、username' ---' siss'ここでは一致しません。注文は重要で、http://php.net/manual/en/mysqli.error.phpはあなたにそれについて語っていたでしょう。 –

+0

クエリが実行される前に、投稿されたユーザー名を読み取ろうとします。 –

+0

@KoenHollanderどこに5がありますか?編集:あなたが削除されました。 –

答えて

1

As I originally stated in comments:

のための文字列とiのために。

バインディングの順序が重要です。

年齢列が実際に整数型であることを確認しながら、現在のパラメータをssisに変更する必要があります。

クエリのエラーを確認すると、その旨が通知されていました。

私はまた、あなたが、プレーンテキストのパスワードを格納していない願っています。ライブでライブを予定している場合は、password_hash()を使用してください。悪いニュースの無記名であることが申し訳

が、これがケースである必要がありますがハッキングされます。

安全なパスワードハッシュ関数を使用せずに準備文を使用しても、サイトが侵害されることはありません。

0

あなたのバインドステートメントのフォーマット指定が間違っています。

mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password); 

mysqli_stmt_bind_param($statement, "ssis", $name, $username, $age, $password); 

するためにこれらの指定子は、列と変数の型と一致する必要があり、この行を変更します。あなたは整数である iパラメータを使用して文字列を挿入しようとしている S のInt

関連する問題