【问题标题】:Insert multiple (fk) data in one of the two phpMyAdmin table在两个 phpMyAdmin 表之一中插入多个(fk)数据
【发布时间】:2012-11-02 15:39:22
【问题描述】:

**嗨。这些是我的结构:

我在 phpMyAdmin 中有 2 个表:

  • 类(classid(pk), className)
  • 学生(studentid(pk)、classid(fk)、studentName) 1 个 form.php 和 1 个 form_post.php

我已经在 form.php** 中完成了这个

include_once("connection.php");


    $className= $_POST["className"];
    $studentName1= $_POST["studentName1"];
    $studentName2= $_POST["studentName2"];
    $studentName3= $_POST["studentName30"];


    $sql = "insert into class(className) values ('$className')";


    mysql_query($sql);

    $lastid=mysql_insert_id();


    $sql2= "INSERT INTO students (studentid, classid, studentName)
            VALUES (' ', $lastid, '$studentName')";

    mysql_query($sql2);

form_post.php:

            <tr>
              <td width="140"><span class="order">Class Name: </span></td>
              <td><span class="order">
                <input name="className" type="text" id="className" size="35" />
              </span></td>
            </tr>
            <tr>
              <td width="132"><span class="order">Student's Name: </span></td>
              <td><span class="order">
                <input type="text" name="studentName1" id="studentName1" />
              </span></td>
            </tr>
           <tr>
              <td width="132"><span class="order">Student's Name: </span></td>
              <td><span class="order">
                <input type="text" name="studentName2" id="studentName2" />
              </span></td>
            </tr>
            <tr>
              <td width="132"><span class="order">Student's Name: </span></td>
              <td><span class="order">
                <input type="text" name="studentName3" id="studentName3" />
              </span></td>
            </tr>

这是一种用于在其中注册班级和学生的表格。 在 phMyAdmin 学生表中,studentid(pk) 有一个字段/列,classid(fk) 有一个字段/列,studentName 有一个字段/列,而我从朋友那里得到的这段代码有 3 个学生姓名字段。如何使用相同的班级外键将 3 个学生姓名插入 phpMyAdmin 学生表的 studentName 列? 红色的词是令人困惑的词。 我仍然是初学者,我整晚都在努力完成这项工作。但是,我仍然卡住了。 谢谢你:)

【问题讨论】:

    标签: php mysql insert phpmyadmin


    【解决方案1】:

    您可以使用插入多行,具体取决于您是否将相同的数据插入到相同的表中

    逃避你的价值观总是好的

    $className= mysql_real_escape_string($_POST["className"]));
    $studentName1= mysql_real_escape_string($_POST["studentName1"]);
    $studentName2= mysql_real_escape_string($_POST["studentName2"]);
    $studentName3= mysql_real_escape_string($_POST["studentName3"]);
    
    $sql2= "INSERT INTO students (studentid, classid, studentName)
            VALUES (' ', $lastid, '$studentName1'),
                   (' ', $lastid, '$studentName2'),
                   (' ', $lastid, '$studentName3')";
    
    mysql_query($sql2);
    

    建议:

    1.学会防止MySQL注入:Good Link

    2.Mysql 扩展不推荐用于编写新代码。相反,应该使用 mysqli 或 PDO_MySQL 扩展。更多阅读:PHP Manual

    第二种解决方案:

    if(!empty($studentName1)) {
      $sql2= "INSERT INTO students (studentid, classid, studentName)
                VALUES (' ', $lastid, '$studentName1')";
    
      mysql_query($sql2);
    }
    
    if(!empty($studentName2)) {
      $sql2= "INSERT INTO students (studentid, classid, studentName)
                VALUES (' ', $lastid, '$studentName2')";
      mysql_query($sql2);
    }
    
    if(!empty($studentName3)) {
      $sql2= "INSERT INTO students (studentid, classid, studentName)
                VALUES (' ', $lastid, '$studentName3')";
      mysql_query($sql2);
    }
    

    【讨论】:

    • 我想知道,如果 $studentname2 为空怎么办? .它会在表中插入值'no'对吗?我该如何摆脱这个?谢谢:D
    • 然后你需要编写三个单独的插入查询并检查值是否存在,否则查询不使用if语句
    • 感谢您的回答。在探索了 if 语句之后。我将代码更改为: if (is_null($_POST["studentName2"]) || $_POST["studentName2"]=="") { $sql2= "INSERT INTO students (studentid, classid, studentName)值('NULL','NULL','NULL')"; ; } else { $sql2= "插入学生 (studentid, classid, studentName) VALUES (' ', $lastid, '$studentName2')"; } 这样对吗 ?谢谢:D
    • 非常感谢:D。不知道你编辑了这篇文章,我不小心在这篇文章中发表了评论。再次感谢您:D
    【解决方案2】:
    $sql2= "INSERT INTO students (studentid, classid, studentName)
            VALUES (null, $lastid, '$studentName')";
    

    【讨论】:

      【解决方案3】:
      $sql2= "INSERT INTO students (studentid, classid, studentName)
              VALUES ('', $lastid, '$studentName')";
      

      【讨论】:

      • 糟糕,我试图编辑我的帖子,但我想我无意中编辑了你的帖子。叹息
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多