Javascript 如何在MySql中存储用户的屏幕名称?
我有一个登记表,用户可以在其中输入一些关于自己的信息。我自己不喜欢必填字段,所以表格很自由。 因此,有一个为用户生成屏幕名称的函数。 用户可以有一个登录名,[login]字段是可选的,因为用户可以选择通过社交网络注册。 因此,为用户生成屏幕名称背后的想法是 JavaScript:Javascript 如何在MySql中存储用户的屏幕名称?,javascript,php,mysql,database-design,Javascript,Php,Mysql,Database Design,我有一个登记表,用户可以在其中输入一些关于自己的信息。我自己不喜欢必填字段,所以表格很自由。 因此,有一个为用户生成屏幕名称的函数。 用户可以有一个登录名,[login]字段是可选的,因为用户可以选择通过社交网络注册。 因此,为用户生成屏幕名称背后的想法是 JavaScript: var nickname = $('#nickname'); var fullname = $('#fullname'); var screen_name = $('#screen-name'); if (nickna
var nickname = $('#nickname');
var fullname = $('#fullname');
var screen_name = $('#screen-name');
if (nickname.val() && fullname.val()) {
screen_name.val(fullname.val()+" ("+nickname.val()+")");
} else {
screen_name.val(nickname.val() || fullname.val() || $('#login').val());
}
HTML:
问题是:
上面的方法可以吗?一方面,表用户可能不符合SQL标准格式,因为screen_name字段是冗余的。另一方面,当有人想要搜索用户并查看他们的屏幕名称时,这可能是一个性能问题,这会经常发生。您担心得太多了。它只是在某个时间是冗余的概念级别,仅适用于那些选择不设置自定义屏幕名称的用户。如果您不在其中存储某些内容,则需要其他字段来指示此用户没有屏幕名称,或者将屏幕名称字段设置为null,以及许多要处理的特殊情况查询/php代码字段是否为null?然后替换为real name.Marc,关键是表单中没有screen_name字段。只有login、fullname和昵称。仅此而已。所有其他字段都与用户名或其变体无关。
<p>
<label for="login"><span><?= _("Login") ?></span><span class="asterix" style="color:red"> *</span></label>
<input type="text" name="login" id="login" value="111" class="textinput" required/>
</p>
<p>
<label for="fullname"><span><?= _("Full name") ?></span></label>
<input type="text" name="fullname" id="fullname" value="" class="textinput"/>
</p>
<p>
<label for="nickname"><span><?= _("Nickname") ?></span></label>
<input type="text" name="nickname" id="nickname" value="" class="textinput"/>
<input type="hidden" name="screen_name" id="screen-name" value="" />
</p>
$query_user_insert = $this->db_connection->prepare('INSERT INTO users (login, fullname, nickname, screen_name) VALUES(:login, :fullname, :nickname, :screen_name)');
$query_user_insert->bindValue(':login', $login, PDO::PARAM_STR);
$query_user_insert->bindValue(':fullname', $fullname, PDO::PARAM_STR);
$query_user_insert->bindValue(':nickname', $nickname, PDO::PARAM_STR);
$query_user_insert->bindValue(':screen_name', $screen_name, PDO::PARAM_STR);