使用选择选项';s值以查询数据库


Using Select Option's value to query database

我有以下代码来生成我的选项:

<?php
$sql = "SELECT DISTINCT MyID FROM database";
$query = $db->prepare($sql);
$query->execute();
$option = "";
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $rows) {
    $id = $rows[MyID];
    $option.="<option>".$id."</option>";
}
?>
<select name="options" id="options" class="options"> 
<option value="$id">Select an Option</option>
<?php echo $option?>
</select>

我想在下一个查询中使用所选选项的值。。像这样:

<?php
$myDB= $db->prepare("SELECT * FROM names WHERE RowID = :option");
$myDB->bindParam(':option', $option); //the value of the option selected in my dropdown
$myDB->execute();
$result = $myDB->fetchAll();

由于某种原因,这不起作用。你能帮忙吗。感谢

<?php
$sql = "SELECT DISTINCT MyID FROM database";
$query = $db->prepare($sql);
$query->execute();
$option = "";
$result = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $row) {
    $id = $row['MyID'];
    $option.='<option value="'.$id.'">'.$id.'</option>';
}
?>
<form method="post" action"(`The url of the next page`)">
<select name="options" id="options" class="options"> 
<option disabled>Select an Option</option>
<?php echo $option?>
</select>
<input type="submit" value="submit" />
</form>

下一页:

<?php
if(isset($_POST['submit']) && isset($_POST['options'])) {
    $option = $_POST['option'];
    $myDB= $db->prepare("SELECT * FROM names WHERE RowID = :option");
    $myDB->bindParam(':option', $option); //the value of the option selected in my dropdown
    $myDB->execute();
    $result = $myDB->fetchAll();
}
  1. 对于fetchAll(),您应该将其分配给一个变量,然后循环通过该变量
  2. $row[MyID] MyID应包装在"或"中,因为索引是字符串,所以$row['MyId']
  3. 您需要将数据提交回服务器,以便PHP能够对其进行任何操作,因为PHP创建HTML,然后将其从服务器发送到浏览器
  4. 我已经为REQUEST变量($_GET,$_POST)使用了if(isset()),这将防止PHP在您尝试加载页面时出现错误,而这些错误不可用

如果你还有其他问题,我很乐意帮忙。

希望这能有所帮助!:)

编辑

<?php
if(isset($_GET['submit']) && isset($_GET['options'])) {
    $option = $_GET['option'];
    $myDB= $db->prepare("SELECT * FROM names WHERE RowID = :option");
    $myDB->bindParam(':option', $option); //the value of the option selected in my dropdown
    $myDB->execute();
    $result = $myDB->fetchAll();
    /**
     * You'll need to put the logic for the query above here
     **/   
} else {        
    $sql = "SELECT DISTINCT MyID FROM database";
    $query = $db->prepare($sql);
    $query->execute();
    $option = "";
    $result = $query->fetchAll(PDO::FETCH_ASSOC);
    foreach ($result as $row) {
        $id = $row['MyID'];
        $option.='<option value="'.$id.'">'.$id.'</option>';
    }
?>
    <form method="get" action"">
    <select name="options" id="options" class="options"> 
    <option disabled>Select an Option</option>
    <?php echo $option?>
    </select>
    <input type="submit" value="submit" />
    </form>
<?php
} // End of else
?>

我还更改了表单方法以获取并删除操作,因此它将提交到当前页面。