多选选项更新数据库中的
例如选择题复选框,以“10”的ID的用户有权利选择他在说什么语言的选项。 他选择用“多选”或“多选框”每一种语言,像这样的:
<input name="lang[]" value="en" type="checkbox" />
<input name="lang[]" value="es" type="checkbox" />
<input name="lang[]" value="jp" type="checkbox" />
我想知道的是,这是如何存储db表这些选项的样子,以及如何将服务器边PHP插入/更新它们?
我的猜测,到目前为止
什么我想象的是,该表将是这个样子:
CREATE TABLE user_langs (id INT AUTO_INCREMENT PRIMARY KEY, lang VARCHAR, fk_user INT);
虽然插入值到新的用户,PHP做一个简单的插入循环:
$stmt = $pdo->prepare('INSERT INTO user_langs (lang,fk_user) VALUES(?,?)');
foreach($_POST['lang'] as $lang){
$stmt->execute(array($lang, $user_id));
}
我得到的问题是更新,最简单的方法是删除所有现有的条目他的用户,并插入新的。
$stmt1 = $pdo->prepare('DELETE FROM user_langs WHERE fk_user=?');
$stmt1->execute(array($user_id));
$stmt2 = $pdo->prepare('INSERT INTO user_langs (lang,fk_user) VALUES(?,?)');
foreach($_POST['lang'] as $lang){
$stmt2->execute(array($lang, $user_id));
}
但我认为这将在增加的主ID太快,如果它的积极使用,即使ID的上限是天文数字,我不喜欢我的污染数据库的想法,所以我猜测我做错了什么,所以我想知道专业人员如何处理它。
“这会过快地增加主ID”---那又如何? – zerkms 2011-04-13 09:00:55
如果这是它应该如何处理,那就这么说吧,我会很快乐的。 – 2011-04-13 09:02:13
他们不*过度*。 Id没有任何商业意义。谁在乎它是42还是42424242 PK值?我不。 – zerkms 2011-04-13 09:03:30