在我正在创建的纸牌游戏中,我需要在foreach循环中更新数据库,因为每3张卡片checkbox
它会为他们创建的手更新数据库。
我遇到的问题是,即使看起来是对的,也不行。
if (isset($_POST['hand']) == true)
{
if (sizeof($_POST['checkbox']) == 3)
{
foreach($_POST['checkbox'] as $checkbox)
{
$query = "UPDATE games SET ? = ? WHERE comp = 0";
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
$stmt = $db->prepare($query);
$stmt->bindValue(1, "ss$ver");
$stmt->bindValue(2, $checkbox);
$stmt->execute();
$ver = $ver + 1;
echo $checkbox.'<br/>';
}
}
else
{
echo 'You must only select 3 cards.';
}
}
$ver
是可以在foreach循环中完成卡片。每次循环循环时,"ss$ver"
/ 'ss'.$ver
递增,以便它跟随数据库中的下一个field title
/ column
。但是我得到的mySQL错误就是这个。
警告:PDOStatement :: execute():SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在第12行的E:\ wamp \ www \ index.php第1行'ss1'='13'WHERE comp = 0'附近使用正确的语法
警告:PDOStatement :: execute():SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在第126行的E:\ wamp \ www \ index.php的第1行'ss2'='15'WHERE comp = 0'附近使用正确的语法。
等。
关于如何绕过复选框的foreach循环或在循环中实际更新的任何想法?
感谢任何帮助!
表格
echo '<form input="index.php" method="post">';
foreach($fetch as $key => $value)
{
$check = '<input class="check" type="checkbox" name="checkbox[]" value="'.$value.'">';
echo $cards[$value].$check;
}
答案 0 :(得分:1)
if (isset($_POST['hand']) == true)
{
if (sizeof($_POST['checkbox']) == 3)
{
foreach($_POST['checkbox'] as $checkbox)
{
$query = "UPDATE games SET ss$ver = ? WHERE comp = 0";
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
$stmt = $db->prepare($query);
// $stmt->bindValue(1, 'ss'.$ver);
$stmt->bindValue(1, $checkbox);
$stmt->execute();
$ver = $ver + 1;
echo $checkbox.'<br/>';
}
}
else
{
echo 'You must only select 3 cards.';
}
}
无法在列/表名称上绑定变量。