【问题标题】:SQL Query based on dropdown menu selection基于下拉菜单选择的 SQL 查询
【发布时间】:2013-04-20 01:57:06
【问题描述】:

我创建一个这样的下拉列表:

<header>
    <h3 align="center"> Highway State </h3>
</header>
<section>
    <article>
        <hgroup>
        </hgroup>
        <p align="center">
        <form style="text-align:center" method="post" action="">

            <select name="dropdown1">
                <?php echo query1(); ?> 
            </select>

        <input type="submit" value="Submit" />
        </form> 
        </p>
    </article>

query1() 在哪里

function query1()
{
    $myHTMLData = '';
    $c=connect();
    $myData=mysqli_query($c, "SELECT DISTINCT highway_state FROM highways_highway ORDER BY highway_state");
    while($record = mysqli_fetch_array($myData))
    {
        $myHTMLData .= '<option value="' . $record['highway_state'] . '">' . $record['highway_state'] . '</option>' ;
    }
    return $myHTMLData;
}

所以我正在做的是用状态填充下拉菜单。

我现在的问题是如何进行类似的 sql 查询 SELECT ID, exit_name FROM Highways_exit WHERE Highway_ID = (SELECT ID FROM Highways_highway WHERE Highway_state = *dropdown1*)

*dropdown1* 是我希望查询基于 dropdown1 中的选择的位置。 我该怎么做?

另外:当用户点击提交按钮时,如何在网页上显示此查询?

我的解决方案尝试(用 index.php 编写)

    <header>
        <h3 align="center">Exit Name</h3>
    </header>
    <section>

        <table border='1' align="center">
            <tr>
            <th>Exit Name</th>
            <th>Exit ID</th>
            </tr>
<?php   
        $c=connect();
        $hstate = $_POST['dropdown1'];
        $hname = $_POST['dropdown2'];
        $hdir = $_POST['dropdown2pt5'];

        $result=mysqli_query($c, "SELECT exit_name, id FROM highways_exit WHERE highway_ID = (SELECT id FROM highways_highway WHERE highway_state = ('" . $hstate . "') AND highway_name = ('" . $hname . "') AND highway_dir = ('" . $hdir . "')) ");  
            while($row = mysqli_fetch_array($result))
            {
                $arrexit = $row['exit_name'];
                $arrid = $row['id'];
                echo "<tr><td>$arrexit</td><td>$arrid</td></tr>";
            }
  ?>
        </table>

    </section>
    <footer>
        <f1 align="center"></f1>
    </footer>

这对于使用菜单项是否正确?这个和菜单对象都在 index.php 上,有没有办法让它工作,以便它可以接收菜单项并在刷新/提交时生成这个表?

【问题讨论】:

    标签: php html mysql sql phpmyadmin


    【解决方案1】:

    您可以使用$_POST['dropdown1']获取值 然后你可以使用它来查询数据库。

    【讨论】:

    • 那么像下面这样的工作吗? $myVal= $_POST['dropdown1'];新查询($myVal);然后函数 newquery($myval) { $myHTMLData = ''; $c=连接(); $myData=mysqli_query($c, "SELECT ID, exit_name FROM Highways_exit WHERE Highway_ID = (SELECT ID FROM Highways_highway WHERE Highway_state = $myVal)"); }
    • 您可以执行类似 $sql = "SELECT ID, exit_name FROM Highways_exit WHERE Highway_ID = (SELECT ID FROM Highways_highway WHERE Highway_state = '" . $_POST['dropdown1'] + "'"; 但是请注意 SQL 注入。您需要在将输入注入查询之前对其进行清理。
    • 如果'dropdown1'只是一个由数据库本身填充的下拉菜单,是否有理由导致注入?
    • 恶意用户可以更改发布的值(就像使用 firebug 一样简单)并发布。
    猜你喜欢
    • 2017-02-16
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 2011-11-23
    相关资源
    最近更新 更多