Кажется, у меня проблемы с выполнением SQL-запроса на сервере через PHP при изменении ввода. Может кто-нибудь взглянуть на мой код и помочь мне?
Служба, отвечающая за обработку http-запроса к серверу:
import { Injectable } from '@angular/core';
import { HttpClient } from "@angular/common/http";
@Injectable({
providedIn: 'root'
})
export class CrudService {
public url = 'http://localhost/web_api/';
constructor(private http: HttpClient) { }
registerNormal(data)
{
return this.http.post(this.url + 'registerNormal.php', data);
}
accountExists(data)
{
return this.http.get(this.url + 'existingAccounts.php', data);
}
}
Функция, отвечающая за передачу данных
CheckAccountAvailability(values)
{
const registerNormalFormData = new FormData();
registerNormalFormData.append('username', values.username);
if (this.registerNormal.get('username').valid)
this.crudService.accountExists(registerNormalFormData).subscribe(result => {console.log(result)});
}
Файл PHP работает нормально, так как я проверил его с почтальоном, а также функция registerNormal()
прекрасно работает.
Кажется, я не могу точно определить проблему.
Большое спасибо!
EDIT:
Ниже приведен HTML-код для компонента, который вызывает функцию. Функция вызывается, но результат, возвращаемый angular, равен NULL
, однако PHP API возвращает результат в порядке с почтальоном
<input matInput placeholder="User Name" formControlName="username" required (input)="CheckAccountAvailability(registerNormal.value)">
РЕДАКТИРОВАТЬ 2:
Ниже приведен код php для существующих учетных записей. Php
<?php
if ($_GET)
{
// include database connection
include 'config/database.php';
try
{
// check if account exists in database
$q_normalAccountExists = "SELECT * FROM normal_accounts WHERE username=:username";
// $q_bandAccountExists = "SELECT * FROM band_accounts WHERE username=:username";
// prepare queries to check if accounts exist in database
$checkNormalAccount = $con->prepare($q_normalAccountExists);
// $checkBandAccount = $con->prepare($q_bandAccountExists);
// GET username
$username = $_GET['username'];
// bind parameters to check if username exists in database
$checkNormalAccount->bindParam(':username', $username);
// $checkBandAccount->bindParam(':username', $username);
// execute username exists in database query
$checkNormalAccount->execute();
// $checkBandAccount->execute();
if ($checkNormalAccount->rowCount() == 0/* && $checkBandAccount->rowCount() == 0*/)
{
echo json_encode(array('result'=>false));
}
else
{
echo json_encode(array('result'=>true));
}
}
// show error
catch(PDOException $exception)
{
die('ERROR: ' . $exception->getMessage());
}
}
?>
РЕДАКТИРОВАТЬ 3:
Кажется, что изменение запроса GET на запрос POST решило проблему. Однако кто-нибудь может сказать мне, почему GET-запросы не будут работать?