Опция множественного выбора
Например, пользователь с идентификатором '10' имеет возможность выбрать, на каких языках он говорит.Он выбирает каждый язык, используя «множественный выбор» или «несколько флажков», например:
<input name="lang[]" value="en" type="checkbox" />
<input name="lang[]" value="es" type="checkbox" />
<input name="lang[]" value="jp" type="checkbox" />
Что я хочу знать, как выглядит таблица БД, в которой хранятся эти параметры, и как бы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));
}
Проблема, с которой я сталкиваюсь, связана с UPDATES, самый простой способ - удалить все существующиезаписи этого пользователя и вставьте новые.
$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));
}
Но я думаю, что это будет слишком быстро увеличивать первичный идентификатор, если он активно используется, даже если верхние пределы идентификатора астрономические.Мне не нравится идея загрязнения моей базы данных, поэтому я предполагаю, что я делаю что-то не так, поэтому я хотел бы знать, как профессионал справляется с этим.