2012-07-29 165 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