使用表单方法=";邮政「;动态分配php变量的步骤

使用表单方法=";邮政「;动态分配php变量的步骤,php,html,mysql,Php,Html,Mysql,我正在尝试根据在“选择”下拉列表中选择的值运行特定的数据库查询。我当前的代码没有运行查询 我当前的代码如下所示: main-search.php <form action="" method="post"> <div class="search-container"> <input type="text" id="search_input" placeholder=""> <select name="search-by"

我正在尝试根据在“选择”下拉列表中选择的值运行特定的数据库查询。我当前的代码没有运行查询

我当前的代码如下所示:

main-search.php

<form action="" method="post">
   <div class="search-container">
       <input type="text" id="search_input" placeholder="">
       <select name="search-by">
           <option value="symptom">Symptom</option>
           <option value="language">Language</option>
       </select>
   </div>
</form>

<?php   
    session_start();
    $searchBy = $_POST['search-by'];
    $_SESSION['search_type'] = $searchBy;
?>
<?php
session_start();

$queryType = $_SESSION['search_type'];

if ($queryType == "symptom") {
        $searchQuery = $db->query("SELECT * FROM Symptoms WHERE symptom_name ORDER BY symptom_name ASC");
    }
    else if ($queryType == "language") {
        $searchQuery = $db->query("SELECT * FROM `Language` WHERE language_name ORDER BY language_name ASC");
    }

?>


症状
语言
search.php

<form action="" method="post">
   <div class="search-container">
       <input type="text" id="search_input" placeholder="">
       <select name="search-by">
           <option value="symptom">Symptom</option>
           <option value="language">Language</option>
       </select>
   </div>
</form>

<?php   
    session_start();
    $searchBy = $_POST['search-by'];
    $_SESSION['search_type'] = $searchBy;
?>
<?php
session_start();

$queryType = $_SESSION['search_type'];

if ($queryType == "symptom") {
        $searchQuery = $db->query("SELECT * FROM Symptoms WHERE symptom_name ORDER BY symptom_name ASC");
    }
    else if ($queryType == "language") {
        $searchQuery = $db->query("SELECT * FROM `Language` WHERE language_name ORDER BY language_name ASC");
    }

?>


我已尝试将main-search.php中的代码更改为

<?php   
    session_start();
    $searchBy = $_POST['search-by'];
    $_SESSION['search_type'] = "symptom";
?>

它按预期工作,运行第一个查询,所以我假设我对post表单做了一些错误,并分配了$searchBy值


我是php新手,因此非常感谢您的帮助。

出于这个目的,最好避免使用会话变量,因为会话变量用于在php中存储/传递页面间的信息(例如登录状态)

根据我的推断,当用户更改
选项时,您正试图动态更改此PHP变量。由于PHP是一个服务器端脚本,这将不起作用,如果您需要在不重新加载页面的情况下更改某些内容,则需要使用客户端脚本(例如Javascript/jQuery)。例如(在jQuery中):

但是,如果我理解正确,最好只使用HTTP POST变量(在PHP中由
$\u POST
访问),例如:

main search.php

<form action="search.php" method="post">
    <div class="search-container">
       <input type="text" id="search_input" placeholder="">
       <select name="search_type" id="search-type">
           <option value="symptom">Symptom</option>
           <option value="language">Language</option>
       </select>
       <button type="submit">Submit</button>
    </div>
</form>
<?php

$queryType = $_POST['search_type'];

if ($queryType == "symptom") {
    $searchQuery = $db->query("SELECT * FROM Symptoms WHERE symptom_name ORDER BY symptom_name ASC");
}
else if ($queryType == "language") {
    $searchQuery = $db->query("SELECT * FROM `Language` WHERE language_name ORDER BY language_name ASC");
}

?>

对吗<代码>何处症状\u名称????
打印($\u POST)
检查提交后得到的内容并共享结果,同时检查您的
WHERE
子句。可能您忘记在原始代码中关闭表单标记,或者有多个表单。这是你的原始代码吗?你有
action=”“
哪个帖子发到同一个页面
main search.php
,你是如何找到
search.php
?@abracadver:OP没有在这个文件
search.php
中使用任何帖子输入的,他正在将数据存储在同一个文件中。这是
main search.php
,实际上它不是一个完整的例子,我假设它也与未定义的索引错误有关。@devpro
main search.php
是一个发布到自己的表单,
search.php
何时何地执行过???