首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建mysql数据库的技巧

问构建mysql数据库的技巧
EN

Stack Overflow用户
提问于 2014-03-21 14:40:13
回答 1查看 633关注 0票数 1

好吧,我的大脑卡住了,我找不到方法来完成我想要的,所以我在寻求你的帮助。

我有一个简单的表格,包括:

  • 用户名[input = "text"]
  • 电子邮件[input = "text"]
  • 密码[input = "text"]
  • 技能[label]
    • 游泳[input = "checkbox"]
    • 潜水[input = "checkbox"]
    • 渔业[input = "checkbox"]
    • etc [input = "checkbox"]
    • etc [input = "checkbox"]
    • etc [input = "checkbox"]

​

技能列表就是你所能想象的。

现在,我创建了一个包含两个表的数据库

表1:[users]

  • userId
  • userName
  • userEmail
  • userPassword

表2:[skills]这个表是一个参考表

  • skillId
  • skillName

现在,我想知道如何才能拯救用户的技能和在哪里?

我想过的解决方案之一是创建第三个表。

表3:[usersSkills]

  • id
  • userId
  • skillId

但问题是我不知道-and,我不知道--如何在表单处理过程中保存这个表中的用户技能!,而用户还没有ID 。

我所做的是对的吗?还是有更好的方法?

我真的很感激你的详细帮助。

P.S.1:表格和程序在同一页内完成。register.php和我正在使用mySQLi

更新

以下是我在页面中所做的工作:

代码语言:javascript
复制
<form action="index.php" method="POST" name="frmInput">

    Username: <input type="text" name="username" size="30"><br />
    Skills:
        <ul>
            <li>Skill 1: <input type="checkbox" name="skills[]" value="1" /></li>
            <li>Skill 2: <input type="checkbox" name="skills[]" value="2" /></li>
            <li>Skill 3: <input type="checkbox" name="skills[]" value="3" /></li>
            <li>Skill 4: <input type="checkbox" name="skills[]" value="4" /></li>
            <li>Skill 5: <input type="checkbox" name="skills[]" value="5" /></li>
        </ul>

        <input type="submit" value="submit">
</form>

<?php

    if(isset($_POST['username'])) {
        $username = $_POST['username'];

        $query = "INSERT INTO `users` (`username`) VALUES ('$username')";
        $run    = mysqli_query($link, $query);
        if($run)
        {
            $user_id = mysqli_insert_id();
            foreach ($_POST['skills'] as $skill)
            {
                $query = "INSERT INTO `users_skills` (`user_id`,`Skill_id`) VALUES ({$user_id},{$skill})";
                $run = mysqli_query($link, $query);
            }
        }
    }

?>

更新:现在工作正常:)

这是工作代码,我张贴它供将来参考,如果有人需要提示,请注意,这个代码不是一个完整的或安全的代码,它只是为了帮助和告诉你的方向。

代码语言:javascript
复制
<form action="index.php" method="POST" name="frmInput">

    Username: <input type="text" name="username" size="30"><br />
    Skills:
        <ul>
            <li>Skill 1: <input type="checkbox" name="skills[]" value="1" /></li>
            <li>Skill 2: <input type="checkbox" name="skills[]" value="2" /></li>
            <li>Skill 3: <input type="checkbox" name="skills[]" value="3" /></li>
            <li>Skill 4: <input type="checkbox" name="skills[]" value="4" /></li>
            <li>Skill 5: <input type="checkbox" name="skills[]" value="5" /></li>
        </ul>

        <input type="submit" value="submit">
</form>

<?php

    if(isset($_POST['username'])) {
        $username = $_POST['username'];

        $query = "INSERT INTO `users` (`username`) VALUES ('$username')";
        $run    = mysqli_query($link, $query);
        if($run == true)
        {
            $user_id = mysqli_insert_id($link);
            // echo $user_id;
            foreach($_POST['skills'] as $skill)
            {
                $query = "INSERT INTO `users_skills` (`user_id`,`Skill_id`) VALUES ({$user_id},{$skill})";
                $run = mysqli_query($link, $query);
            }
        }
    }

?>

谢谢你的帮助..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-21 14:46:49

好的,当用户没有id时,您不会保存。首先插入用户,得到它,然后插入技巧。

您的HTML应该如下所示:

代码语言:javascript
复制
... user data ...
<input type="checkbox" name="skills[]" value="1" /> Skill 1
<input type="checkbox" name="skills[]" value="2" /> Skill 2
<input type="checkbox" name="skills[]" value="3" /> Skill 3
<input type="checkbox" name="skills[]" value="4" /> Skill 4
<input type="checkbox" name="skills[]" value="5" /> Skill 5

然后在PHP中执行如下操作:

代码语言:javascript
复制
if (query("INSERT INTO users ...")) {
  $user_id = insert_id(); //with mysql it's mysqli_insert_id(), depeneds what you use to insert
  foreach ($_POST["skills"] as $skill) {
    //escape $skill with mysqli escape, or use as parameter
    query("INSERT INTO skills (user,skill) values ({$user},{$skill})");
  }
}

显然,你需要调整这个来适应你的情况,但我希望这能让你的想法朝着正确的方向发展。

让我知道你的想法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22561818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档