PHP MYSQL update table


PHP MYSQL update table

我正在使用MYSQL和php将数据插入到我的sql中。

我有两个表用户和用户权限。

我正在使用复选框在用户编辑页面上显示权限。当取消选择或选择权限时,我会更新我的用户权限表。

CREATE TABLE userrights (
  userid int(11) NOT NULL default '0',
  right_name varchar(50) collate latin1_general_ci NOT NULL default '',
  PRIMARY KEY  (userid,right_name)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

INSERT INTO userrights (userid, right_name) VALUES
(1, 'add'),
(1, 'delete'),
(1, 'edit'),
(1, 'view'),
(2, 'add'),
(2, 'delete'),
(2, 'edit'),
(2, 'view');
CREATE TABLE users (
  id int(11) NOT NULL,
  `name` varchar(100) collate latin1_general_ci default NULL,
  email varchar(100) collate latin1_general_ci default NULL,
  pass varchar(42) collate latin1_general_ci default NULL,
  PRIMARY KEY  (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
INSERT INTO users (id, name, email, pass) VALUES
(1, 'name', 'email@email.com', '5f4dcc3b5aa765d61d8327deb882cf99'),
(2, 'name name', 'email2@email.com', '1a1dc91c907325c69271ddf0c944bc72');

我该怎么做?

我以前也遇到过类似的问题。

我想出的解决方案是截断表并重新插入所有选定的条目。

您可以获得复选框的数据(true或false)

$rows = mysql_num_rows(mysql_query("SELECT * FROM userrights WHERE id = 'x' and right_name = 'y'"); // Please use insted of mysql_* PDO or MySQLi 
if ($rows > 0)
{
        if ($checkbox == false)
        {
        mysql_query("DELETE FROM userrights WHERE id = 'x' AND right_name = 'y'");
        }
}
else
{
// Recht nicht vorhanden --> if checkbox == true
      if ($checkbox == true)
      {
      mysql_query("INSERT INTO... VALUES ($id, $right_name)
      }
}

首先你要检查用户是否有权利。如果是,则需要检查右侧(数据来自复选框)是否设置为false-->从表中删除该行。如果用户没有这样的权限,并且复选框为true,则必须将其插入到mysql_table中。必须将代码中的注释更改为and if子句。