1

我有一个充满玩家的数据库,我正在尝试创建一个页面来将他们注册到特定的锦标赛中。赛事总监将按用户名(只有“firstname.lastname”)搜索玩家。

我遇到的问题是,当我运行循环来回显每个 $players[$x] 时,它只给出第一个匹配的数据库记录的 ID,并为每个匹配重复一次该数字。它不会返回 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));}
4

2 回答 2

2

fetch对于同一个查询,您有多个,将后面的代码替换为$run_query = mysqli_query($dbcon, $query);以下代码:

 $players = array ();
 while ($dbsearch = mysqli_fetch_assoc($run_query))
     {
         array_push($players, $dbsearch['PlayerID']);;
     }
于 2015-08-25T07:52:52.973 回答
1

你的 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 的攻击

于 2015-08-25T07:51:57.070 回答