我正在使用 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)
?>
最佳答案
这个 $NewLocation = "'"。 $_POST['位置']."'";
它应该是小写的“l
”(L),因为 name='location'
区分大小写。
然后将其更改为简单的 $NewLocation = $_POST['location'];
然后在查询的 WHERE
子句中引用它的值。
即:
WHERE Location = '$NewLocation'";
如果它是一个字符串,则很可能是。
旁注:最好始终终止所有语句。
sqlsrv_close($conn);
并引用 Action
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
。
关于PHP 不会从下拉列表发布到下一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43876548/