根据下拉选择显示特定的MySQL行

时间:2014-07-27 17:59:29

标签: php mysql sql forms

我创建了一个包含下拉字段的表单

<select name="locationselect" id="locationselect" tabindex="7">
  <option value="Location1">Location 1</option>
  <option value="Location2">Location 2</option>
  <option value="Location3">Location 3</option>
  <option value="Location4">Location 4</option>
</select>

提交后,我想从下拉列表中提取他们选择的位置,并从我的MySQL数据库中打印一条特定的行,向他们显示一个地址。因此,如果他们选择位置1,它将显示:

Company Name 
1234 ABC Street
New York, NY 12345

但如果他们选择位置2,则会显示:

Other Company
5678 XYZ Street 
San Francisco, CA 12345 

依此类推99个不同的地点。

这是我的开始,但是我错过了一个定义数组$ fulladdress的变量 - 我是MySQL的新手,所以我甚至不确定选择之后要放什么?是否有行号或者我可以将第一列的内容或哪种类型的ID放入?

switch($_GET['locationselect']){

case 'Location1':
   mysql_query("SELECT ____ FROM locations");
   break;
case 'Location2':
   mysql_query("SELECT ____ FROM locations");
   break;
  }
  while($row = mysql_fetch_array($fulladdress))
  {
  echo ($row['PlaceName']." Office Building<br>".$row['Address']."<br>".$row['City'].", CA      
  ".$row['Zip']."<br><br>");
  }

如何解决这个问题的任何帮助将不胜感激。我知道我的代码很乱,但我希望你能理解我想要做的事情。

谢谢!!

1 个答案:

答案 0 :(得分:0)

我对使用case语句不太确定,你可以做的是参数化查询。所以它会是:

mysql_query("Select fulladdress from Location where location ='" . $location . "'");

使用下拉值,您可以将其传递给$location变量。 但是,如果您在搜索框中显示如此多的值。您可能希望查看jQuery Autocomplete之类的内容。当然,在您退出输入后。

修改

上述方法不是很安全,你应该真的使用mysqli。并使用类似预备语句的内容:

$stmt = $dbConnection->prepare('SELECT * FROM locations WHERE name = ?');
$stmt->bind_param('s', $name);

有关详情,请查看SQL Injection

上的这篇文章