为什么我的更新语句使用错误的数据更新我的列?

时间:2016-02-23 17:31:54

标签: php mysql pdo

为什么我的更新语句使用错误的数据更新我的列card_id

我的数据库结构。

db structure

$deckCardIds包含一组不同的两位数字。

我希望代码能够:根据我循环的当前行更新每一列,并使用当前索引card_id更新$deckCardIds

实际发生的事情:列循环通过,数据设置为$deckCardIds但是当循环移动到下一次迭代时设置为0

<?php
$playerId=$_GET['playerid'];   
$playerDeckCardIds=$_GET['deckcardids'];   

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

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 row_id FROM player_deck WHERE player_id = :player_id');
    $stmt->execute(array('player_id' => $playerId));

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

    $i=0;

    foreach($r as $row) 
    {
        $stmt = $conn->prepare('UPDATE player_deck SET card_id = :card_id WHERE row_id = :row_id');
        $stmt->bindParam(':card_id', $deckCardIds[$i]);
        $stmt->bindParam(':row_id', $row->row_id);
        $stmt->execute();
        $i++;
    }
}
catch(PDOException $e) 
{
    echo 'ERROR: ' . $e->getMessage();
}  
?>

0 个答案:

没有答案