我知道这是旧的 MySQL 驱动程序,而不是 MySQLi或 PDO .我想使用我所知道的来完成我的网站,然后请一些可爱的人以一定的价格为我转换它。
我有一张报名表。第一个下拉列表是选择事件,它从数据库中提取数据。代码如下:
<td width="490">Select Event:</td>
<td width="373"><span id="spryselect1">
<select name="event" id="event">
<?php
$query = mysql_query("SELECT * FROM skiptonevents ORDER BY id ASC");
echo "<option value=\"\">Please select one...</option>";
while($result = mysql_fetch_array($query)){
echo "<option value=\"" . $result['name'] . "\">" . $result['name'] . "</option>";
}
?>
</select>
<span class="selectRequiredMsg">Please select an event.</span></span></td>
一旦此人选择了他们想要的事件,他们将继续使用他们的个人详细信息填写表格的其余部分。
在表格的底部有“付款:'下拉'”
代码:
<tr>
<td colspan="4" align="center"><select name="amount" id="amount">
<?php
$query = mysql_query("SELECT * FROM skiptonevents WHERE name = '". $event . "' ");
echo "<option value=\"\">Please select one...</option>";
while($result2 = mysql_fetch_array($query)){
echo "<option value=\"" . $result2['quote'] . "\">" . $result2['quote'] . "</option>";
}
?>
</select> </td>
</tr>
如您所见,我添加了 WHERE '". $event . "'
这是顶部 'ID' 的下拉菜单。这是行不通的。因此,当 WHERE 与顶部选择的内容匹配时,它将显示数据库中该事件的报价。
我该如何解决这个问题?
最佳答案
来自 <form>
的数据放在一个数组中供您使用,而不是(除非您使用的是非常旧的 PHP 并且仍然打开了安全模式)在变量中。即使是,您也应该使用数组,否则您的代码将无法移植到较新版本的 PHP
数组是$_GET 和$_POST,具体取决于您使用的方法属性<form method="get">
或 <form method="post">
所以假设你使用 method="post"
像这样修改您的查询
$query = mysql_query("SELECT *
FROM skiptonevents
WHERE name = '{$_POST['event']}'");
你真的应该验证/清理 $_POST['event']
在您使用它之前,因为它来自不受信任的来源。
您还应该考虑从使用 mysql_ 扩展更改为 mysqli_ 或 PDO,因为 mysql_ 扩展已被弃用并已从即将发布的 PHP7 中删除。
关于php - 从下拉列表中选择,然后可以在以后的 WHERE 中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31734743/