У меня есть БД, полная игроков, и я пытаюсь создать страницу, чтобы зарегистрировать их в конкретном турнире. Директор турнира будет искать игроков по имени пользователя (это всего лишь «имя_листа»).
Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю цикл для вывода каждого $ Players [$ x], он дает только идентификатор для первой соответствующей записи в БД и повторяет число один раз для каждого совпадения. Вместо того, чтобы возвращать ID 7, 11, 26, он вернет 7, 7, 7. Пожалуйста, кто-нибудь может объяснить, почему?
Я написал следующий код в файл .php:
session_start();
if (isset($_POST['newsearch']) === true && empty($_POST['newsearch'] === false)){
require 'dbconnect.php';
$term = $_POST['newsearch'];
$terms = "%" . $term . "%";
$query = ("SELECT PlayerID FROM players WHERE Username LIKE '$terms'");
$run_query = mysqli_query($dbcon, $query);
$search = mysqli_fetch_assoc($run_query);
$players = array ();
do{
//Get data from players table
$PlayerID = $search['PlayerID'];
array_push ($players, $PlayerID);
}
while ($dbsearch = mysqli_fetch_assoc($run_query));}
У вас есть больше, чем один fetch
для того же запроса замените код после $run_query = mysqli_query($dbcon, $query);
с этим кодом:
$players = array ();
while ($dbsearch = mysqli_fetch_assoc($run_query))
{
array_push($players, $dbsearch['PlayerID']);;
}
Ваш цикл while неправильный
$query = ("SELECT PlayerID FROM players WHERE Username LIKE '$terms'");
$run_query = mysqli_query($dbcon, $query);
$search = mysqli_fetch_assoc($run_query);
$players = array ();
do{
//Get data from players table
$PlayerID = $search['PlayerID'];
array_push ($players, $PlayerID);
}
while ($search = mysqli_fetch_assoc($run_query));
}
Положил $search
вместо $dbsearch
$search = mysqli_fetch_assoc($run_query))
Примечание: ваш запрос уязвим для SQLI