1

そのため、3 つのデータベース テーブルがあり、そのうちの 1 つが他の 2 つのテーブル (カード テーブルとユーザー テーブル) の間のコネクタのように機能します。コネクタ テーブルには、idUser、idCard、および amount の 3 つの列があります。

私のコードには、同じカードを 1 ~ 4 枚追加することを選択できる選択ボタンがあります。これは、4 枚をすぐに追加するか、一度に 1 枚追加することで実行できるようにしたいと考えています (金額欄を 4) とする。

今のところ、私のコードは次のようになります。

if (isset($_POST['addCard'])) {

    if (!isset($_SESSION['sess_user'])){
    print "fel!";

    }else {
        $idUser = $_SESSION['sess_id'];
        $idCard = $_POST['addCard'];
        $amount = $_POST['amount'];

    $query1 = "INSERT INTO userDeck (idUser, idCard, amount) VALUES ('$idUser',    '$idCard', '$amount')";
        $result1 = mysql_query($query1);
        }
}

これは、ユーザーがログインしているかどうかを確認します。それ以外の場合は「間違っている」と出力されます (テストしただけです)。ログインしている場合でも、任意の数のカードを追加すると、テーブルに新しい行が作成されます。

必要な情報を追加したことを願っています。本当にこれに固執しているので、どんな助けも感謝しています。ありがとう!

4

3 に答える 3

0
INSERT INTO userDeck (idUser, idCard, amount) 
VALUES ('$idUser', '$idCard', '$amount')
ON DUPLICATE KEY UPDATE amount=amount+$amount

(idUser, idCard)フィールドに一意の複合キーまたは主キーが必要です。

編集:同じクエリで最大4枚のカードを強制するには:

INSERT INTO userDeck (idUser, idCard, amount) 
VALUES ('$idUser', '$idCard', MIN(4, '$amount'))
ON DUPLICATE KEY UPDATE amount=MIN(4, amount+$amount)
于 2012-07-05T15:09:11.823 に答える
0

切り替えて (またはさらにロジックを追加して)、UPDATEステートメントを含めます。

またはデータベーススキーマを変更して、カウントを含めずにユーザーごとのカードのリストのみを含めるようにします。ユーザーが新しいカードを取得したときに INSERT のみを処理し、ユーザーがカードを紛失したときに DELETE を処理できます。

于 2012-07-05T15:01:18.690 に答える
0

クエリは次のようになります。

UPDATE userDeck 
SET amount = amount + $amount 
WHERE 
    idUser = $idUser AND 
    idCard = $idCard
于 2012-07-05T15:02:48.470 に答える