我使用这个脚本更新到我的表中的列。
第一列“close_account”是枚举值“0”或“1”,它们在“我的数据库”中显示为单选框。
第二列“account_status”是枚举值“Active”或“Deactivated”,它在“我的数据库”中显示为下拉框列表。
我不确定在这种情况下,它们是一个下拉框还是一个广播框是否重要。
但是,我的问题是我试图通过运行以下mysql查询来更新close_account和account_status,close_account需要更新为“1”,account_status应该更新为“Deactivated”。目前由于某些原因,只有“关闭帐户”正在更新,而不是帐户状态,有人可以告诉我原因吗?
谢谢。
<? 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
枚举数据被解释为枚举索引(数字)。使用字符串代替枚举数据以提高可读性和使用率。
举个例子:
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
开始,在上述情况下,index2
是small
。同时'5'
也被认为是x-large
的指标。关于php - 枚举值不更新在mysql表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15311931/