Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从数据库中选择一个行数组并用另一个数据数组更新它们_Php_Mysql_Arrays - Fatal编程技术网

Php 如何从数据库中选择一个行数组并用另一个数据数组更新它们

Php 如何从数据库中选择一个行数组并用另一个数据数组更新它们,php,mysql,arrays,Php,Mysql,Arrays,我正在unity中开发一个交易卡游戏,需要PHP和MySQL方面的帮助 我的数据库结构是这样的。这是在玩家注册时设置的。每个玩家在玩家牌堆内有60排,因为牌堆限制为60排 players player_id/email/password/username player_deck player_id/card_id/card_amount 我试图在玩家保存牌组时更新这些行。从Unity的一端,我正在调用一个类似于以下内容的URL "localhost/saveplayerdata/savep

我正在unity中开发一个交易卡游戏,需要PHP和MySQL方面的帮助

我的数据库结构是这样的。这是在玩家注册时设置的。每个玩家在玩家牌堆内有60排,因为牌堆限制为60排

players
player_id/email/password/username


player_deck
player_id/card_id/card_amount
我试图在玩家保存牌组时更新这些行。从Unity的一端,我正在调用一个类似于以下内容的URL

"localhost/saveplayerdata/saveplayerdeck.php?playerid=&deckcardids=&deckcardamounts="
PHP页面将
deckcards
deckcardaments
存储到两个数组中

现在我被困在这里了。我需要获取属于该播放器的所有行,并使用Unity发送的数据更新它们

这就是我目前所拥有的。我可以选择所需的行,但如何使用数组中的数据更新它们?谢谢你的阅读

编辑:添加了要更新的我的查询。这将更新所有行。我只需要它用
deckcardis
所在的索引更新循环通过的当前行。我知道我的更新查询是错误的,但我不确定使用的语法是否正确,因此我只影响我所在的行

<?php

$playerId = $_GET['playerid'];

$playerDeckCardIds = $_GET['deckcardids'];
$playerDeckCardAmounts = $_GET['deckcardamounts'];

$deckCardIds = explode(" ", $playerDeckCardIds);
array_pop($deckCardIds);
$deckCardAmounts = explode(" ", $playerDeckCardAmounts);
array_pop($deckCardAmounts);

//This is the new array of cardIds sent from Unity
//foreach ($deckCardIds as $value) 
//{
//echo "Deck Card Id $value <br>";

//}
//This is the new array of cardAmounts sent from Unity
// foreach ($deckCardAmounts as $value) 
//{
//echo "Deck Card Amount $value <br>";

//}

try
{
    #Connect to the db
    $conn = new PDO('mysql:host=localhost;dbname=tcg', 'root', '');
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $conn->prepare('SELECT card_id, card_amount FROM player_deck WHERE player_id = :player_id');
    $stmt->execute(array('player_id' => $playerId));

    $r = $stmt->fetchAll(PDO::FETCH_OBJ);

    $i = 0;
    #If we have a result
    if (count($r))
    {
        foreach ($r as $row)
        {
            $stmt = $conn->prepare('UPDATE player_deck SET card_id = :card_id WHERE player_id = :player_id');
            $stmt->bindParam(':player_id', $playerId);

            $stmt->bindParam(':card_id', $deckCardIds[$i]);

            $stmt->execute();
            $i ++;
        }
    }
} catch (PDOException $e)
{
    echo 'ERROR: ' . $e->getMessage();
}
?>


欢迎来到SO。请阅读,这不是一个免费的编码或教程服务。你必须表明你已经做出了一些努力来解决你自己的问题。你的更新查询在哪里?@mkaatman抱歉更新了我的上述问题。