php - 枚举值未在 mysql 表中更新?

标签 php mysql

我正在使用此脚本更新我的表中的列。

第一列“close_account”是一个枚举值“0”或“1”,它们在我的数据库中显示为单选框。

第二列“account_status”是一个枚举值“Active”或“Deactivated”,它在我的数据库中显示为下拉框列表。

我不确定在这种情况下它们是下拉框还是单选框这一事实是否重要。

但是我的问题是我试图通过运行以下 mysql 查询来更新 close_account 和 account_status,close_account 需要更新为“1”,account_status 应该更新为“已停用”。目前由于某种原因只有“close_account”在更新,但 account_status 没有更新,有人可以告诉我为什么吗?

谢谢。

<? ob_start(); ?>
<?php

require_once('includes/session.php');
require_once('includes/functions.php');
require('includes/_config/connection.php');

session_start();

    confirm_logged_in();

    if (isset ($_GET['to'])) {
    $user_to_id = $_GET['to'];


}


if (!isset($_GET['to']))
    exit('No user specified.');

$user_id = $_GET['to'];


$result = mysql_query("SELECT * FROM ptb_users WHERE user_id ='".$_SESSION['user_id']."' ");

if($result) 
{ 
mysql_query("UPDATE ptb_users SET close_account='1' WHERE user_id=".$_SESSION['user_id']."") 
or die(mysql_error());

mysql_query("UPDATE ptb_users SET account_status='Deactivated' WHERE user_id=".$_SESSION['user_id']."") 
or die(mysql_error());

header("Location: dashboard.php");

}
?>
<? ob_flush(); ?>

最佳答案

对枚举数据使用数值总是令人困惑。特别是当枚举数据与枚举索引值重叠时。

在您的情况下,显然 1 enum-data 被解释为 enum-index(numeric)。使用字符串代替枚举数据以获得更好的可读性和使用性。

考虑一个例子:

DROP TABLE enum_tb;

CREATE TABLE enum_tb (size ENUM('x-small', 'small', 'medium', 'large', 'x-large') NOT NULL);

INSERT INTO enum_tb
VALUES ('x-small'), (2), ('5');

SELECT * FROM enum_tb;

输出:

mysql> select * from enum_tb;
+---------+
| size    |
+---------+
| x-small |
| small   |
| x-large |
+---------+
3 rows in set (0.00 sec)

惊喜吗?

MySQL 在传递索引时存储实际的枚举值。枚举索引从 1 开始,在上述情况下索引 2small。此外,'5' 被视为 x-large 的索引。

关于php - 枚举值未在 mysql 表中更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15311931/

相关文章:

mysql - 我如何在 cakePHP 中创建子查询?

mysql - 大 IN 语句 - 来自电子表格的数据

session-variables - PHP session 在 Yahoo API 调用后过期?

php - 使用PHP的当前页面截图

php - 表中显示重复记录

mysql - 查看表时 phpMyAdmin 显示错误

mysql - Laravel 5 和远程 mysql 无法在生产环境中运行

php - Vue.js XSS 漏洞

javascript - JQuery 自动完成以一个字符串返回所有结果

PHP 连接失败 : SQLSTATE[HY000] [2002] Connection refused