在PHP查询的下拉列表中输入“Any”值

在PHP查询的下拉列表中输入“Any”值,php,mysql,drop-down-menu,Php,Mysql,Drop Down Menu,我运行一个查询来创建一个下拉列表 $sql_course = "SELECT * FROM hc_course"; $result_course = mysql_query($sql_course); echo "<select name='course_num'>"; while ($row = mysql_fetch_array($result_course)) { echo "<option value='" . $row['course_num

我运行一个查询来创建一个下拉列表

$sql_course = "SELECT * FROM hc_course";
$result_course = mysql_query($sql_course);

echo "<select name='course_num'>";
    while ($row = mysql_fetch_array($result_course)) {
        echo "<option value='" . $row['course_num'] . "'>" . $row['course_name'] . "</option>";
   }
echo "</select>";
这将生成包含所有正确名称的列表

但是,我想插入一个any条目,然后将基于该条目的下一个查询从“course_num”转换为*

您的意思是这样吗

echo "<select name='course_num'>";
echo "<option value='*'>Any</option>";
while ($row = mysql_fetch_array($result_course)) {
    ....
您永远不应该信任用户输入,因此需要添加某种形式的PHP清理来处理请求

初始代码:

$sql_course = "SELECT * FROM hc_course";
$result_course = mysql_query($sql_course);

echo "<select name='course_num'>";
echo "<option value="">Any</option>"; // New code for all courses
while ($row = mysql_fetch_array($result_course)) {
    echo "<option value='" . htmlspecialchars($row['course_num']) . "'>" . htmlspecialchars($row['course_name']) . " </option>";
}
echo "</select>";

这一点很好,但这也适用于html输出,因此您将使用htmlspecialchars$row['course_num']等。不是直接的用户输入,但它同样需要编码。在这一点上,我只是尝试学习所有这些的基本逻辑。我将开始采用更好的实践,并开始使用MySQLi或PDO语句,但现在,我对所有这些都是如此陌生,我很高兴能够通过echo-Hi-World;下面的答案有用吗?@jszobody是的,你的答案有用。事后再看很有道理。谢谢大家
$sql_course = "SELECT * FROM hc_course";
$result_course = mysql_query($sql_course);

echo "<select name='course_num'>";
echo "<option value="">Any</option>"; // New code for all courses
while ($row = mysql_fetch_array($result_course)) {
    echo "<option value='" . htmlspecialchars($row['course_num']) . "'>" . htmlspecialchars($row['course_name']) . " </option>";
}
echo "</select>";
if (empty($_POST["course_num"]))
{
    // Run SQL to select all courses
}
else
{
    // Sanitise the $_POST["course_num"]
    // Run SQL to select a specific course item
}