在foreach循环中更新数据库?

时间:2013-08-22 02:46:15

标签: php mysql

在我正在创建的纸牌游戏中,我需要在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;
}

1 个答案:

答案 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.';
    }
}

无法在列/表名称上绑定变量。