#php #mysql #sql #mysqli
#php #mysql #sql #mysqli
Вопрос:
Я новичок в PHP. Я использую приведенный ниже код в своем проекте, но он не работает, но не выдает никакой ошибки. Я попытался преобразовать его в метод GET, но он по-прежнему тоже не работает.
PHP — это мой интерфейс, а база данных MYSQL — это серверная часть.
Я уже создал таблицу в серверной части, и я проверил пользовательскую таблицу, но значения тоже не вставлены.
Испробованные методы:
Я вставил данные вручную, используя команду insert, и она работает нормально.
Вызов API
http://localhost/test/register.php?phone=12345amp;name=Smithamp;birthdate=1974-12-01amp;address=7th Avenue
Ошибка:
{"error_msg":"Required parameter (phone,name,birthdate,address) is missing!"}
Register.php
<?php
require_once 'db_functions.php';
$db=new DB_Functions();
$response=array();
if(isset($_POST['phone']) amp;amp;
isset($_POST['name']) amp;amp;
isset($_POST['birthdate']) amp;amp;
isset($_POST['address']))
{
$phone=$_POST['phone'];
$name=$_POST['name'];
$birthdate=$_POST['birthdate'];
$address=$_POST['address'];
if($db->checkExistsUser($phone))
{
$response["error_msg"]="User already exists with" .$phone;
echo json_encode($response);
}
else
{
//Create new user
$user=$db->registerNewUser($phone,$name,$birthdate,$address);
if($user)
{
$response["phone"]=$user["Phone"];
$response["name"]=$user["Name"];
$response["birthdate"]=$user["Birthdate"];
$response["address"]=$user["Address"];
echo json_encode($response);
}
else
{
$response["error_msg"]="Unknown Error occurred in registration!";
echo json_encode($response);
}
}
}
else
{
$response["error_msg"]="Required parameter (phone,name,birthdate,address) is missing!";
echo json_encode($response);
}
?>
CheckUser.PHP
<?php
require_once 'db_functions.php';
$db=new DB_Functions();
$response=array();
if(isset($_POST['phone']))
{
$phone=$_POST['phone'];
if($db->checkExistsUser($phone))
{
$response["exists"]=TRUE;
echo json_encode($response);
}
else
{
$response["exists"]=FALSE;
echo json_encode($response);
}
}
else
{
$response["error_msg"]="Required parameter (phone) is missing!";
echo json_encode($response);
}
?>
db_functions.php
<?php
class DB_Functions
{
private $conn;
function __construct()
{
require_once 'db_connect.php';
$db=new DB_Connect();
$this->conn=$db->connect();
}
function __destruct()
{
// TODO: Implement __destruct() method.
}
/*
* Check user exists
* return true/false
*/
function checkExistsUser($phone)
{
$stmt=$this->conn->prepare("select * from User where Phone=?");
$stmt->bind_param("s",$phone);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows > 0)
{
$stmt->close();
return true;
}
else{
$stmt->close();
return false;
}
}
/*
* Register new user
* return User Object if user was created
* Return error mssage if have exception
*/
public function registerNewUser($phone,$name,$birthdate,$address)
{
$stmt=$this->conn->prepare("INSERT INTO User(Phone,Name,Birthdate,Address) VALUES(?,?,?,?)");
$stmt->bind_param("ssss",$phone,$name,$birthdate,$address);
$result=$stmt->execute();
$stmt->close();
if($result)
{
$stmt=$this->$this->conn->prepare("SELECT * FROM User where Phone = ?");
$stmt->bind_param("s",$phone);
$stmt->execute();
$user=$stmt->get_result()->fetch_assoc();
$stmt->close();
return $user;
}
else
{
return false;
}
}
}
db_connect.php
<?php
class DB_Connect{
private $conn;
public function connect()
{
require_once 'config.php';
$this->conn=new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_DATABASE);
return $this->conn;
}
}
?>
Имя, телефон, адрес и значение Dateofbirth необходимо вставить в базу данных MYSQL.
Комментарии:
1. Где ваша HTML-форма? Можете ли вы показать его нам тоже? Возможно, вы просто допустили опечатку или не указали правильный метод.
2. Как вы отправили запрос? можете ли вы добавить форму?
3. Замените все
$_POST
на$_GET
при передаче параметров запроса4. Что вы получите, если выполните vardump
$_GET
?5. Да, вы можете использовать POST на PHP, но в показанном вами URL API используются параметры GET.
Ответ №1:
Ваш URL-вызов — это метод GET, но вы запрашиваете переменные POST.
Таким образом, в основном ваш оператор if привел к false, отсюда и сообщение об ошибке. Измените их на GET .
if(isset($_GET['phone']) amp;amp;
isset($_GET['name']) amp;amp;
isset($_GET['birthdate']) amp;amp;
isset($_GET['address']))
Тогда это должно сработать