在Mysqli_query中检查并返回值

时间:2017-09-28 18:14:42

标签: php android mysql mysqli

我是Android开发人员,并尝试使用PHP和Mysqli为注册用户创建一个API。我已经制作了如下的API

<?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);
?>

基本上我将电子邮件作为参数传递,例如example.com/login?=abc@gmail.com 我想检查电子邮件是否已经在数据库表中。如果数据库中存在电子邮件,我希望返回user_id作为响应,如果电子邮件不在我想要的数据库中,则在数据库中添加该电子邮件并希望返回user_id。我已经使API工作正常,但我不知道如何返回位于该电子邮件的user_id。让我知道是否有人可以给我解决我的难题的想法。感谢

2 个答案:

答案 0 :(得分:2)

以下代码将创建一个包含message和user_id的数组。

 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注入攻击。

答案 1 :(得分:0)

首先,您应该使用PreparedStatement来避免sql注入。

然后,您可以使用 PDO::lastInsertId()