2017-09-28 25 views
-1

私はAndroidの開発者で、PHPとMysqliを使用して登録ユーザー向けに1つのAPIを作成しようとしています。私は基本的に私はexample.com/[email protected] のようにパラメータとして電子メールを渡していると私は、電子メールは、データベーステーブルに既に存在するかどうかということをチェックしたいMysqli_queryの確認と返品

<?php 
    include("dbconnection.php"); 
    $email= $_GET['email']; 
    $query = mysqli_query($conn, "SELECT * FROM tbl_user WHERE email='".$email."'"); 
    if (!$query){ 
     die('Error: ' . mysqli_error($con)); 
    } 
    if(mysqli_num_rows($query) > 0){ 
     $response='success'; 
    }else{ 
     $sql = "INSERT INTO tbl_user(email)VALUES ('".$email."')"; 
     if (mysqli_query($conn, $sql)) { 
      $response='success'; 
     }else { 
      $response='error'; 
     } 
    } 
    echo json_encode($response); 
?> 

の下のようなAPIをしました。電子メールがデータベースに存在する場合、返信user_idを返信し、電子メールがデータベースにない場合、その電子メールをデータベースに追加して、返すようにしたいとします。 APIは必要に応じて正常に動作していますが、そのメールにあるuser_idを返す方法はわかりません。誰かが私のパズルを解決するためのアイデアを与えることができるかどうかを教えてください。ありがとう

+0

http://php.net/manual/en/mysqli.insert-id.php –

+0

「user_id」とは何ですか?それはオートインクリメントの値ですか? – Ravi

+0

@Raviはい... user_idというプライマリキー – Priya

答えて

1

以下のコードを使用することができます。

include("dbconnection.php"); 
    $email= $_GET['email']; 
    $query = mysqli_query($conn, "SELECT * FROM tbl_user WHERE email='".$email."'"); 
    if (!$query){ 
     die('Error: ' . mysqli_error($con)); 
    } 
    if(mysqli_num_rows($query) > 0){ 
     // assign message to response array 
     $response['message']='success'; 
     // Get the results data 
     while($row = mysqli_fetch_assoc($query)) { 
      // assign user_id to response array 
      $response['user_id'] = $row['user_id']; 
     } 
    }else{ 
     $sql = "INSERT INTO tbl_user(email) VALUES ('".$email."')"; 
     if (mysqli_query($conn, $sql)) { 
      $response['message']='success'; 
      // assign last inserted id to response array 
      $response['user_id'] = mysqli_insert_id($conn); 
     }else { 
      $response['message']='error'; 
     } 
    } 
    echo json_encode($response); 

準備文は、SQLインジェクション攻撃からSQL文を保護するのに役立ちます。

+0

こんにちは!ありがとうございました....新しいレコードを追加するためのその正常な作業。しかし、電子メールが存在する場合、警告と呼ばれるエラーが発生します。mysqli_fetch_assoc()は、パラメータ1がmysqli_resultになることを期待していますが、while($ row = mysqli_fetch_assoc($ result)){"ありがとう – Priya

+0

は答えを –

+0

更新しましたありがとうございました!そのうまく動作します。どうもありがとう :) – Priya

0

まず、SQLの注入を避けるためにPreparedStatementを使用する必要があります。

そして、第2次のメッセージとuser_idを持つ配列を作成しますPDO::lastInsertId()

関連する問題