我使用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)
?>
答案 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
。