2016-10-22 5 views
0
を使用してデータベースに自分のユーザー情報を送信することはできません

マイコード:私はmysqli_query

<?PHP 

session_start(); 
$user = 'root'; 
$password = 'root'; 
$db = 'Authentication'; 
$host = 'localhost'; 
$port = 3306; 

$link = mysqli_init(); 
$success = mysqli_real_connect(
    $link, 
    $host, 
    $user, 
    $password, 
    $db, 
    $port 
); 
if(isset($_POST['sbtn'])){ 
    session_start(); 
    $f_name = mysqli_real_escape_string($_POST['f_name']); 
    $l_name = mysqli_real_escape_string($_POST['l_name']); 
    $email = mysqli_real_escape_string($_POST['email']); 
    $pass = mysqli_real_escape_string($_POST['pass']); 
    $c_pass = mysqli_real_escape_string($_POST['c_pass']); 

    if($pass == $c_pass){ 
     //create user 
     $Password = md5($pass); 
     mysqli_query($success, $db); 

     $query = "INSERT INTO users(email, password, f_name, l_name) VALUES ($email, $pass, $f_name, $l_name)"; 
     mysqli_query($success, $query); 
    }else{ 
     //tell user they are not equal 
     echo("The two passwords did not match"); 
    } 
} 

mysqli_close($success); 
?> 

私がエラーコードを確認しており、私はコーディングに新しいですと、コードの残りの部分の全てが機能することのようです私はこの問題をどのように克服できるのか理解するのに苦労しています!

助けていただければ幸いです!

+0

もしあなたがPHPを使い慣れていないなら、mysqliではなくpdoを学ぶことをお勧めします。これはあなたの問題に関連していませんが、私はまだそれを言う必要がありました。 – modu

+0

生成されたクエリを画面に出力してから、それをmysqlで直接実行して何が起こっているのか確認しましたか? (ヒント:引用) –

答えて

-1

変更しよう:

$query = "INSERT INTO users(email, password, f_name, l_name) VALUES ($email, $pass, $f_name, $l_name)"; 

へ:

$query = "INSERT INTO users(email, `password`, f_name, l_name) VALUES ('$email', '$pass', '$f_name', '$l_name')"; 

説明:その後 When to use single quotes, double quotes, and backticks in MySQL

mysqli_query($success, $db); 
mysqli_query($success, $query); 
mysqli_close($success); 
(デバッグ用に)

$result = mysqli_query($link, $query); 
    if (!$result) { 
     echo '<pre>'; 
     var_dump(mysqli_error_list($link)); 
     echo '</pre>'; 
    } 

説明:

へ:

mysqli_query($link, $query); 

へ:

mysqli_query($link, $db); 
mysqli_query($link, $query); 
mysqli_close($link); 

そして最後に

私の(貧しい)英語については申し訳ありません

すべてのこれらの置換は、($の成功 - > $リンク)行われ、これらの機能は、あなたがmysqli_connect()またはmysqli_init()で返すリンクIDが必要ですが、ので、合格$成功(ブール値) http://php.net/manual/en/mysqli.query.php(手続き型の要件)

変更:

$f_name = mysqli_real_escape_string($_POST['f_name']); 
$l_name = mysqli_real_escape_string($_POST['l_name']); 
$email = mysqli_real_escape_string($_POST['email']); 
$pass = mysqli_real_escape_string($_POST['pass']); 
$c_pass = mysqli_real_escape_string($_POST['c_pass']); 

$f_name = mysqli_real_escape_string($link,$_POST['f_name']); 
$l_name = mysqli_real_escape_string($link,$_POST['l_name']); 
$email = mysqli_real_escape_string($link,$_POST['email']); 
$pass = mysqli_real_escape_string($link,$_POST['pass']); 
$c_pass = mysqli_real_escape_string($link,$_POST['c_pass']); 
から

説明: をmysqli_real_escape_stringはmysqli_connect()又はmysqli_init()によって返されたリンク識別子を必要とします。 http://php.net/manual/en/mysqli.real-escape-string.php(手続きスタイルの必要条件)

+0

OPの問題をどのように解決するかについていくつかの説明を追加することをお勧めします。 – RamenChef

+0

ありがとうございましたこれはうまくいきましたが、データベースが空の情報でいっぱいになってしまったのですが、一度変更された理由と、情報を送信しないように修正する方法についての手掛かりはありますか? –

+0

いくつかの説明を追加しました。空値の問題は、mysqli_real_escape_string()関数http://php.net/manual/en/mysqli.real-escape-string.php(手続き型スタイルの必要条件)を使用して適切に修正されました。 –

関連する問題