为什么我的更新语句使用错误的数据更新我的列card_id
?
我的数据库结构。
$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();
}
?>