php - 使用PHP循环多次查询MYSQL数据库

标签 php mysql loops

上下文:我正在查询一个数据库,以返回指定数量的怪物,用于在一个简单的基于网络的角色扮演游戏中进行战斗。

问题:我有一个简单的 MYSQL 查询,其中包含一个 WHERE 子句以确定怪物的“级别”。在之前的函数中,我构建了一个数组,其中包含应返回的相应怪物的等级;像这样的东西:

$levels = Array( [0] => 3 [1] => 1 [2] => 1 ) 

所以在上面的数组中,Value对应的是level。所以我希望返回 3 个怪物 -- 级别 3、级别 1 和级别 1。

很简单。现在我想用以下查询 MYSQL 并大概使用循环进行查询 3 次以获得我的 3 个怪物;像这样的东西:

$query = "SELECT *, CardHP as EncounterCardHP, CardAP as EncounterCardAP";
$query .= " FROM Cards";
$query .= " WHERE CardTypeId = 1 AND CardRarity = {$level}";
$query .= " ORDER BY RAND() LIMIT 1";

所以在上面的查询中,变量 {$level} 是前一个数组中的怪物等级。循环格式是我挣扎的地方。我正在尝试类似的东西:

while ($i = $levels) {
     $query = "SELECT *, CardHP as EncounterCardHP, CardAP as EncounterCardAP";
     $query .= " FROM Cards";
     $query .= " WHERE CardTypeId = 1 AND CardRarity = {$i}";
     $query .= " ORDER BY RAND() LIMIT 1";
 $result_set = mysql_query($query, $connection);
 confirm_query($result_set);
 return $result_set;    
}

我认为这很接近,但我没有看到我如何才能最终从 MYSQL 给我一个单一的怪物数组。在上面看来,我正在构建 3 个独立的数组?我是否需要使用 array_merge(),或者是否有更简单、更优雅的方法来做到这一点?如果我得到所有相同级别的怪物,我可以简单地运行查询 1 次和 LIMIT 3,但我需要怪物与之前数组显示的内容相对应。

有道理吗?始终感谢您的帮助。

最佳答案

我不完全明白你想做什么,但这应该循环并得到你的数组:

foreach ($levels as $key => $value) {
    $query = "SELECT *, CardHP as EncounterCardHP, CardAP as EncounterCardAP FROM Cards WHERE WHERE CardTypeId = 1 AND CardRarity = {$value} ORDER BY RAND() LIMIT 1";
    $results = mysqli_query($connection, $query);
    while($row = $result->fetch_array(MYSQLI_BOTH)) {
        $monsters[$key]['HP'] = $row['CardHP'];
        //Add as needed
    }
}

它创建一个多维数组,其中第一个键与级别中的键相同,后续键是 SQL 查询的结果。

$monsters = array(
    [0] => array(
        ['HP'] => 10
        ['AP'] => 5
    )
    [1] => array(
        ['HP'] => 5
        ['AP'] => 7
    )
)

此外,mysqli 可能更适合您使用,因为它支持过程式风格和面向对象,并且大多数功能完全相同,只是使用了 mysqli 前缀。

关于php - 使用PHP循环多次查询MYSQL数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14314428/

相关文章:

php - 小 mysql_queries 花费太多时间

php jquery 自动加载内容

php - 使用 PDO 数据库类而不每次都创建新连接?

python - 如何将数组中的数字存储在 block 中并创建另一个数组或列表?

php - MySQL查询循环内和递归超时

javascript - jQuery 表单验证检查以循环结束

php - 当仅为用户创建用户时,如何创建新文件夹

php - SQL 同时插入和更新

php - 显示数据库中的记录 [codeigniter]

MySql 表与 sum 合并