我正在使用此脚本更新我的表中的列。
第一列“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
开始,在上述情况下索引 2
是 small
。此外,'5'
被视为 x-large
的索引。
关于php - 枚举值未在 mysql 表中更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15311931/