首页 > 解决方案 > (MySQLi 程序)INSERT INTO (...) WHERE ID = SESSION ID

问题描述

我想向 MySQL 数据库中插入数据,应该插入数据的列必须取决于会话 ID。

<?php

session_start();

if (isset($_POST["mybutton"])) {

    $favcolor = $_POST["mybutton"];

    switch ($favcolor) {
        case "0":
            $sql = "INSERT INTO preferences (color) VALUES ('colord_id_1') WHERE id = $_SESSION['id']";
            mysqli_query($conn, $sql);
            break;
        case "1":
            $sql = "INSERT INTO preferences (color) VALUES ('colord_id_2') WHERE id = $_SESSION['id']";
            mysqli_query($conn, $sql);
            break;
    }
}

mysqli_close($conn);

标签: phpmysqlmysqli

解决方案


您想更新记录而不是插入新记录:

$stmt = $conn->prepare("UPDATE preferences SET color='colord_id_1' WHERE id=?");
$stmt->bind_param('i', $_SESSION['id']);
$stmt->execute();

程序风格:

$stmt = mysqli_prepare($conn, "UPDATE preferences SET color='colord_id_1' WHERE id=?");
mysqli_stmt_bind_param($stmt, 'i', $_SESSION['id']);
mysqli_stmt_execute($stmt);

推荐阅读