【问题标题】:Sending dynamic select form to a MySQL database using POST使用 POST 将动态选择表单发送到 MySQL 数据库
【发布时间】:2013-03-29 02:11:22
【问题描述】:

我正在尝试使用动态选择表单将信息发送到 MySQL 数据库。用户将能够选择他们的学校,然后从该学校的列表中选择他们的专业(全部从 MySQL 表中检索)。然后我想将该信息发送到要存储的数据库中的不同表。

这是我目前所拥有的代码:

<select name="school">
  <php
  $sql = "SELECT school_name, school_id FROM school_table ORDER BY school_name";
  $query = mysql_query($sql,$conn);

  while($row = mysql_fetch_array($states))
    {
  echo ("<option value=$row[school_id]>$row[school_name]</option>");        
    }
  ?>
</select>

我不知道如何进行第二个选择,理想情况下,它会从第一个表中识别出school_id,并将其与第二个表中相应的school_id 匹配,该表还列出了该学校的专业。另外,当表单最终完成后,我不知道如何将表单发送到 MySQL 表。

【问题讨论】:

    标签: php mysql html forms


    【解决方案1】:

    您可以使用简单的表单将值从组合框提交到服务器(如 HTTP POST 或 HTTP GET),并将该值用作 SQL 语句中的变量,也可以使用简单的 AJAX 请求发送您的 php 脚本的必要信息。不管怎样,你的服务器端代码应该是这样的:

    //process.php
    $myRetrievedValue = $_POST["school"];
    $mySqlStm = "SELECT * FROM foo WHERE bar = '".mysql_escape_string($myRetrivedValue)."'";
    

    在客户端,您的代码可能如下所示(使用简单的表单,不使用 AJAX 内容):

    <form action="process.php" method="post">
    <select name="school">  
    <php  $sql = "SELECT school_name, school_id FROM school_table ORDER BY school_name";  
          $query = mysql_query($sql,$conn);  while($row = mysql_fetch_array($states))    {  
          echo ("<option value=$row[school_id]>$row[school_name]</option>");            }  ?>
    </select>
    <input name="" type="submit" />
    </form>
    

    请记住:每当您在查询中使用用户输入时,请使用准备好的语句(或至少如上所述的转义方法)以避免 SQL 注入。

    【讨论】:

    • mysql_escape_string 已弃用,不应使用
    【解决方案2】:

    答案是使用连接从一个 SELECT 中的两个表中进行选择: http://dev.mysql.com/doc/refman/5.0/en/join.html

     INNER JOIN
    
         SELECT `school_table`.`school_name`,
                `school_table`.`school_id`,
                `2ndTable`.`school_id`,
                `2ndTable`.`major`,
                    FROM school_table,2ndTable 
                    WHERE `school_table`.`school_id`=`2ndtable`.`school_id`
                    ORDER BY school_name
    
     or a 
     LEFT JOIN (returning all columns in the left)
    
         SELECT `school_table`.`school_name`,
                `school_table`.`school_id`,
                `2ndTable`.`major`,
                `2ndTable`.`school_id`
                    FROM school_table
                    LEFT JOIN on `school_table`.`school_id`=`2ndtable`.`school_id`
                    ORDER BY school_name
    

    【讨论】:

      猜你喜欢
      • 2011-07-02
      • 2017-01-05
      • 1970-01-01
      • 2021-08-21
      • 2020-09-09
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多