我是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。让我知道是否有人可以给我解决我的难题的想法。感谢
答案 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()