php - 如何处理 PHP 中的 <option> 值以便在数据库中可读

标签 php mysql forms

所以我有一个很长的国家大学列表,这些大学的名称很长,我需要为每个 <option value="1">LONG NAME </option> 分配一个值标签。问题是该值是数字,我希望当我从数据库返回数据时它是可读的。

长话短说,下面的代码返回我的值数字。大学名怎么翻译?

<form method="post" action=""">
  <select name="university">
    <option value="1">UNIVERSITY LONG NAME </option>
    <option value="2">UNIVERSITY LONG NAME....</option>
    <option value="3">UNIVERSITY LONG NAME 2</option>
  </select>
  <input type="submit" value="Submit the form"/>
</form>

<?php
 $option = isset($_POST['university']) ? $_POST['university'] : false;
   if ($option) {
      echo htmlentities($_POST['university'], ENT_QUOTES, "UTF-8");
   } else {
     echo "task option is required";
     exit; 
   }
?>

最佳答案

首先,您需要一个包含大学详细信息的数据库,以便您可以获取它们或将它们显示给最终用户,具体取决于他选择的大学。 我创建了一个名为universities的表并添加了2个字段(ID,university_name),id字段将是该表的主键,每所大学都会有一个唯一的id,两所大学不可能有相同的 id ,因此当 uesr 选择一所大学时,代码将根据其 id 搜索该大学。

只是为了测试我添加了 3 所大学的代码,这是表结构和我添加到其中的大学:

表结构:

enter image description here

我为此测试添加的大学:

  • 阿拉斯加大学费尔类克斯分校:ID (1)
  • 阿肯色大学:ID (2)
  • 加州大学伯克利分校:ID (3)

现在,如果用户选择“阿拉斯加大学费尔类克斯分校”并按下提交,则应该出现“阿拉斯加大学费尔类克斯大学”的所有信息,这就是代码将执行的操作,具体取决于结果的选项 ID。

现在让我们来看代码: 在我的代码中,我使用 PDO 连接到数据库并从数据库中获取数据。什么是PDO?以及如何从数据库中获取数据?

PDO is an acronym for PHP Data Objects. PDO is a lean, consistent way to access databases. This means developers can write portable code much easier. PDO is not an abstraction layer like PearDB. PDO is a more like a data access layer which uses a unified API (Application Programming Interface).

要了解如何从数据库中获取数据,我希望您阅读本主题: PHP 从 MySQL 中选择数据:http://www.w3schools.com/php/php_mysql_select.asp

编辑(谢谢 chris85):我编辑了准备语句,这样它就可以免受 SQL 注入(inject)的影响:

请阅读此内容:Prepared statements and stored procedures

旧代码:

$FetchUniversity = $conn->prepare("SELECT * FROM universities WHERE id= university ");
$FetchUniversity->execute();

新代码:

 $FetchUniversity = $conn->prepare("SELECT * FROM universities WHERE id= ? ");
 $FetchUniversity->execute(array($university_id));

完整代码在这里:

<html>
<body>
<form method="post" action="">
  <select name="university">
    <option SELECTED>Pick University </option>
    <option value="1">University of Alaska Fairbanks</option>
    <option value="2">University of Arkansas</option>
    <option value="3">University of California, Berkeley</option>
  </select>
  <input type="submit" name="submit">
</form>
 <?php 

    $servername = "Localhost";
    $username   = "root";
    $password   = "";
    $database  = "Name of the database";

        try {
                $conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
                // set the PDO error mode to exception
                $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            }
        catch(PDOException $e)
            {
                echo "Connection failed: " . $e->getMessage();
            }

        if(isset($_POST['submit']))
            {
                $university_id = $_POST['university'];
                $FetchUniversity = $conn->prepare("SELECT * FROM universities WHERE id= ? ");
                $FetchUniversity->execute(array($university_id));
                $FetchUni = $FetchUniversity->FETCH(PDO::FETCH_ASSOC);

                echo $PickerUni = $FetchUni['university_name'];
            }
        else 
            {
            echo "Please Pick a university";

            }
?>
</body>
<html>

我在我的电脑(本地电脑)上测试了这段代码,所以服务器名称是“Localhost”。

我看到您没有给提交按钮命名,这是错误的,如果您不打算使用 AJAX 之类的东西,您应该给它命名。随着时间的推移,一切都会对你来说很容易,这又是一个测试代码,如果不是,你会看到我放了一些东西来保护查询,但它是一个测试代码,所以没有危险。希望这对你有帮助 future ,如果有什么不适合你,请告诉我。

关于php - 如何处理 PHP 中的 <option> 值以便在数据库中可读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39196044/

相关文章:

css - 如何在 MaterializeCSS 中调整响应式表单的输入字段宽度?

php - 使用 SAX 和 XPATH 解析大型 XML 文件

php - CodeIgniter 水印

php - 如何将 PHP 变量数组发送到 MySQL 数据库?

用于执行多个准备好的查询更新的 PHP 代码在第二次迭代时失败并出现重复键错误

mysql - 使用 Table.Column 是否可以提高性能?

php - 如何检索 Google+ oAuth2 个人资料缩略图

mysql - SELECT 返回未出现在任何行中的值列表

forms - 框阴影出现在表格下方

python - 如何为表单中未填写的字段添加错误消息?