Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql表中的枚举值未更新?_Php_Mysql - Fatal编程技术网

Php mysql表中的枚举值未更新?

Php mysql表中的枚举值未更新?,php,mysql,Php,Mysql,我正在使用此脚本更新我的表中的列 第一列“close_account”是枚举值“0”或“1”,它们在我的数据库中显示为单选框 第二列“account_status”是枚举值“Active”或“Deactivated”,在我的数据库中显示为下拉框列表 我不确定在这种情况下,它们是下拉框还是收音机框这一事实是否重要 然而,我的问题是,我试图通过运行以下mysql查询来更新close_帐户和account_状态,close_帐户需要更新为“1”,account_状态应该更新为“Deactivated”

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

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

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

我不确定在这种情况下,它们是下拉框还是收音机框这一事实是否重要

然而,我的问题是,我试图通过运行以下mysql查询来更新close_帐户和account_状态,close_帐户需要更新为“1”,account_状态应该更新为“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
enum数据被解释为enum索引(数字)。使用字符串作为枚举数据,以提高可读性和使用率

举个例子:

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

的索引,对枚举数据使用数值总是令人困惑。尤其是当枚举数据与枚举索引值重叠时

在您的案例中,
1
enum数据被解释为enum索引(数字)。使用字符串作为枚举数据,以提高可读性和使用率

举个例子:

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或数据库。最简单的方法是直接进入数据库而不使用PHP。使用MySQL命令行实用程序(
MySQL
),或者使用phpmyadmin之类的图形工具

使用这些工具之一连接到测试数据库。(不是生产数据库。始终进行安全测试。)从SQL提示符运行此查询

UPDATE ptb_users 
SET close_account='1', 
    account_status = 'Deactivated'
WHERE user_id = somenumber
somenumber
替换为实际的现有用户id号

话虽如此,枚举数是一个数字是不寻常的。像这样声明枚举没有多大意义

create table foo (
  user_id integer not null,
  bar enum('0', '1')
);
像这样的事情更常见

create table foo (
  user_id integer not null,
  bar enum('open', 'closed')
);
要更新这样的枚举,请使用字符串值

update foo
set bar = 'closed'
where user_id = somenumber and bar = 'open';

同样,用实际的用户id号替换somenumber。

处理此类问题的系统方法是首先将问题隔离到PHP或数据库。最简单的方法是直接进入数据库而不使用PHP。使用MySQL命令行实用程序(
MySQL
),或者使用phpmyadmin之类的图形工具

使用这些工具之一连接到测试数据库。(不是生产数据库。始终进行安全测试。)从SQL提示符运行此查询

UPDATE ptb_users 
SET close_account='1', 
    account_status = 'Deactivated'
WHERE user_id = somenumber
somenumber
替换为实际的现有用户id号

话虽如此,枚举数是一个数字是不寻常的。像这样声明枚举没有多大意义

create table foo (
  user_id integer not null,
  bar enum('0', '1')
);
像这样的事情更常见

create table foo (
  user_id integer not null,
  bar enum('open', 'closed')
);
要更新这样的枚举,请使用字符串值

update foo
set bar = 'closed'
where user_id = somenumber and bar = 'open';

同样,将somenumber替换为实际的用户id号。

您知道可以在
update
语句中一次更新多个列吗
“更新ptb_用户设置关闭\u帐户='1',帐户状态='Deactivated'WHERE user\u id=“.$\u SESSION['user\u id']]
-另外,请输入
mysql\u error()
的值,如果查询无法正确运行,很有可能这会告诉您出了什么问题-我看到您正在以这条消息的形式死去,它向您显示了什么吗?如果您从页面中转储查询文本并手动运行会发生什么情况?还有。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果选择PDO,.数字枚举值会令人困惑。你能测试一下当你
为一个账户设置close\u account='2'
时会发生什么吗?它是否存储
close\u account='1'
?这里的第一个问题,请阅读如何操作。您知道可以在
update
语句中一次更新多个列
“更新ptb_用户设置关闭\u帐户='1',帐户状态='Deactivated'WHERE user\u id=“.$\u SESSION['user\u id']]
-另外,请输入
mysql\u error()
的值,如果查询无法正确运行,很有可能这会告诉您出了什么问题-我看到您正在以这条消息的形式死去,它向您显示了什么吗?如果您从页面中转储查询文本并手动运行会发生什么情况?还有。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果选择PDO,.数字枚举值会令人困惑。你能测试一下当你
为一个账户设置close\u account='2'
时会发生什么吗?它是否存储
close_account='1'
?这里的第一个问题,请阅读如何操作。