PHP不会从下拉列表中发布到下一个文件

时间:2017-05-09 17:43:15

标签: php sql sql-server-2008

我使用PHP和SQL创建数据库来存储人们当前的位置。对于我在SQL数据库的所有可能位置加载并将其放入下拉列表的其中一个页面。一旦用户提交了他们想要的位置,就可以将POST发送到下一个将要进行查询的PHP文件,但是它无法执行此操作。

<form action=droplocationget.php method="post">
<?php
$server = 'XXXXXXXX';
$connectionInfo = array("Database"=>"XXXXXXX");
$conn = sqlsrv_connect($server,$connectionInfo);

$Getloc = "SELECT DISTINCT Location FROM CurrentData";
$results = sqlsrv_query($conn, $Getloc);

  echo "<select id='location' name='location'>";
  while($row = sqlsrv_fetch_array($results, SQLSRV_FETCH_ASSOC))
  {
echo "<option value=''>".$row['location']."</option>";
}
echo "</select>";
?>
<input type = "submit" value="Find">
</form>

收到的代码是:

?php
$server = 'XXXXXXXXX';
$connectionInfo = array("Database"=>"XXXXXXX");
$conn = sqlsrv_connect($server,$connectionInfo);

$NewLocation = "'". $_POST['Location']."'";



$describeQuery="select Username, Firstname, Lastname, Location from 
CurrentData WHERE Location = $NewLocation";
$results = sqlsrv_query($conn, $describeQuery);
while($row = sqlsrv_fetch_array($results, SQLSRV_FETCH_ASSOC))
{
echo '<p>'.$row['Username'].' '.$row['Firstname'].' '.$row['Lastname'].' 
'.$row['Location'].'</p>';
}

sqlsrv_close($conn)
?>

1 个答案:

答案 0 :(得分:1)

$NewLocation = "'". $_POST['Location']."'";

它应该是小写的“l”(L),因为name='location'区分大小写。

然后将其更改为$NewLocation = $_POST['location'];,然后在查询的WHERE子句中引用它的值。

即:

WHERE Location = '$NewLocation'";

假设它是一个字符串,很可能是。

附注:始终最好终止所有陈述。

sqlsrv_close($conn);

并引用行动

action="droplocationget.php"

PHP的错误报告会有所帮助。

旁注:

如果要显示值(并在HTML源代码中),可以使用'".$value."'作为示例。

echo "<option value='".$value."'>".$row['location']."</option>";

值可以是任何值,它甚至可以是用于$row或其他列值的相同值。

如果您希望以双引号设置(显示)该值,则只需转义双引号:

echo "<option value=\"$value\">".$row['location']."</option>";

有些人更喜欢使用双引号值。

请注意,列名和值(也)区分大小写。

根据评论所示,填充的行应使用大写L

echo "<option value='".$row['Location']."'>".$row['Location']."</option>";

根据查询的列名为Location