如何在MySql中存储用户的屏幕名称?

时间:2015-06-22 15:13:07

标签: javascript php mysql database-design

我有一个注册表单,用户可以在其中输入一些自己的信息。我自己并不喜欢所需的字段,所以形式非常自由。 因此,存在为用户生成屏幕名称的功能。 用户可以拥有登录名,全名(如John Doe),昵称(如C0olH} {kkr)或三者的任意组合。 [login]字段是可选的,因为用户可以选择通过社交网络进行注册。 因此,为用户生成屏幕名称背后的想法是

JavaScript的:

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:

<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>

然后我通过PHP存储screen_name字段:

        $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);

问题是:

以上方法可以吗?一方面,表&#34;用户&#34;可能不符合SQL普通形式,因为&#34; screen_name&#34;场是多余的。另一方面,当有人想要搜索用户并查看他们的屏幕名称时,这可能是一个性能问题,这种情况经常发生。

0 个答案:

没有答案