-1

我是一个完整的新手,这是我在其中一个论坛上发表的第一篇文章。所以如果我没有正确解释自己或者不应该问这样的问题,那么请原谅我并尽量对我耐心:)

基本上,我已经建立了一个 mysql 数据库,我可以从我的网站上填充它。我创建了一个基本搜索选项,我想从下拉列表中选择一个选项,并且还可以输入关键字。我已经弄清楚了 hte 关键字部分,我只是对如何处理事物的下拉部分感到有些困惑。我已经在互联网上搜索了答案,但我不确定我是否使用了正确的术语,因此我发现很难解决这个问题。

我之前创建了一个基本的 MYSQL 数据库并使其工作,所以我只能假设问题出在自动填充的下拉列表中。

让我解释一下......我有一个想象性地标题为“Search.php”的搜索页面,其中包含一个由下拉菜单和一个文本框组成的表单(不要担心文本框 - 工作正常),下降下拉框会自动从我的 MYSQL 数据库中填充,当提交表单时,结果应该出现在另一个页面上,标题为“Results.php”。出于某种原因,下拉列表中的值似乎没有被传递到“结果”页面!

这是“搜索”页面的下拉框。

<select name="Name" id="Name">
<option>Please select</option>
<?PHP
while($row = mysql_fetch_assoc($result))
{$dropdown .="\r\n<option value='{$row['Name']}'>{$row['Name']}</option>";}
echo $dropdown;
PHP?>

这一切似乎都很好,它会自动从我的 MYSQL 数据库中填充,我很高兴它能正常工作。


这是“结果”页面。

<?php 
 mysql_connect('xxxxxxxxxxxx', 'username', 'password') or die(mysql_error()); 
 mysql_select_db("database") or die(mysql_error()); 

 $query = "SELECT * FROM Shirts WHERE Name = '$Name'" or die(mysql_error()); 
 $result = mysql_query($query) or die(mysql_error());  

 if(mysql_num_rows($result) > 0) {

 while($row = mysql_fetch_assoc($result))
 {
  echo ($row['Name']);
  echo "<br />";
  }
 }

Shirts = 表名 Name = 表中的列


出于某种原因,这只返回我数据库中的“空”字段,这让我相信“搜索”页面上下拉框中的值没有被传递到“结果”页面!

4

2 回答 2

1

这是在黑暗中拍摄的,因为上面缺少您的代码片段,这会使这更加清晰..但是,您似乎实际上并没有检索表单传递的值。这些值不是自动可用的;您需要先获取它们,然后才能使用它们。

由于我不知道您使用的是哪种数据传递方法,请尝试以下操作:

$Name = $_REQUEST['Name'];

并将其放在生成结果的 php 文件的顶部。

$_REQUEST包含两种方法的数据POSTGET,因此根据您使用的任何方法,它应该可以工作。

但是,我真的希望这个网站不存在。它不仅使用了已弃用的功能,而且容易受到注入攻击。

我建议mysql_*您学习如何使用PDO. PDO 的一大特点是它可以自动转义查询,前提是您使用命名参数。

于 2012-09-27T23:31:59.393 回答
1

您的 htmlselect应该包含在一个表单中,其中包含对结果页面的操作,如果在表单上指定了方法,则它是getor之一post,如果没有指定方法属性,则默认为get,取决于您应该在查询中使用$_GET['Name']$_POST['Name']分别代替的$Name

于 2012-09-27T23:32:49.810 回答