2012-07-29 95 views
0

我正在使用MYSQL和PHP插入数据到我的SQL。PHP MYSQL更新表

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

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

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 protected]', '5f4dcc3b5aa765d61d8327deb882cf99'), 
(2, 'name name', '[email protected]', '1a1dc91c907325c69271ddf0c944bc72'); 

我该怎么做?

+0

请澄清...你是问如何编写你的查询来更新权限?或者如何将该功能绑定到你网站上的复选框(使用表单提交或Ajax)? – 2012-07-29 16:29:08

+0

如何通过提交表单将此功能添加到网站 – user1561124 2012-07-29 16:32:07

回答

1

我以前有类似的问题。

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

+0

我确实想过删除所有记录,然后再次重新输入记录 $ sql =“INSERT INTO userrights(1,'add');”; $ sql。=“INSERT INTO userrights(1,'edit');”; $ sql。=“INSERT INTO userrights(1,'delete');”; $ result2 = mysql_query($ sql); – user1561124 2012-07-29 16:26:27

+0

@ user1561124:请不要使用'mysql_ *'函数来编写新代码。他们不再维护,社区已经开始[弃用程序](http://goo.gl/KJveJ)。请参阅* [红盒子](http://goo.gl/GPmFd)*?相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定哪些,[这篇文章](http://goo.gl/3gqF9)会帮助你。如果你选择PDO,[这里是很好的教程](http://goo.gl/vFWnC)。 – 2012-07-29 16:27:02

+0

@ user1561124:另外,将PDO事务与预准备语句结合使用可以为您提供巨大的效率提升。 – 2012-07-29 16:27:28

0

你得到复选框的数据(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中。 必须将注释更改为代码中的if子句。

+0

如果权限已被添加,如果我尝试再次选择他们将被删除,我如何添加权限并更新用户同一时间 – user1561124 2012-08-01 20:43:13

+0

上面的代码是不是完成。 哦fuuuuuuu!我用德语写了一些东西......这是我的错。我改变了代码abvoe! – poldi 2012-08-03 19:42:56