从 MS SQL 服务器下拉到 select 数据

DropDown to select data from MS SQL server

我正在尝试让 PHP 网络应用程序显示下拉列表中特定 Countries 的数据,但我不知道如何使用 WHERE [Column] = [ PHP 下拉列表中的值 1、值 2、值 3]。

我正在使用 "Adventure Works 2014 Full Database Backup" 进行测试。

<html>
</body>
<!-- form for tower selection -->
<form action="test20.php" method="POST">
Please select the tower you are about to work on. </br></br>
<select name="TowerSelect"><option> Choose </option>
<?php
$serverName = 'SERVERNAME';
$uid = 'USERNAME';
$pwd = 'PASSWORD';
$databaseName = 'AdWorks';

$connectionInfo = array( 'UID'=>$uid,
                        'PWD'=>$pwd,
                        'Database'=>$databaseName);

$conn = sqlsrv_connect($serverName,$connectionInfo);
if($conn){
    echo '';
}else{
    echo 'Connection failure<br />';
die(print_r(sqlsrv_errors(),TRUE));
}
$sql = "SELECT BusinessEntityID, FirstName FROM dbo.vKelvin WHERE CountryRegionName = 'United States'";
$result = sqlsrv_query($conn,$sql) or die("Couldn't execut query");
while ($data=sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){

    echo "<option value=";
    echo $data['BusinessEntityID'];
    echo ">";
    echo $data['BusinessEntityID']; 
    echo "</option>";
}
?>
<input type="submit" value="Select Tower">
</select></br></br>
</form>
</body></html>
<?php
if(empty($_POST['TowerSelect'])){     
    $_SESSION['tower'] = ''; 
} else {  
    $_SESSION['tower'] = $_POST['TowerSelect']; 
    echo "<tr>";
    echo $_SESSION['tower'];
    echo "  selected. </p>";
    echo('<td>'.$row['BusinessEntityID'].'</td><td>'.$row['FirstName'].'</td></tr>');
}

我相信我已经解决了这个问题。代码有很多问题。您正在引用一个 $row 但没有 SQL 会导致 $row 的查询,您试图在结束 HTML 标记之后 post 数据,您试图创建table 的行而不声明 table,以及其他一些事情。其中一些可能是快速创建测试用例的结果。没问题。试试这个...

<?php
$serverName = 'SERVERNAME';
$uid = 'USERNAME';
$pwd = 'PASSWORD';
$databaseName = 'AdWorks';
$connectionInfo = array( 'UID'=>$uid,'PWD'=>$pwd,'Database'=>$databaseName);
$conn = sqlsrv_connect($serverName,$connectionInfo);
if($conn){echo '';}else{echo 'Connection failure<br />';die(print_r(sqlsrv_errors(),TRUE));}

?><html><body>
<!-- form for tower selection -->
<form action="test20.php" method="POST">
Please select the tower you are about to work on. </br></br>
<select name="TowerSelect"><option> Choose </option>
<?php

$sql = "SELECT BusinessEntityID, FirstName FROM dbo.vKelvin WHERE CountryRegionName = 'United States'";
$result = sqlsrv_query($conn,$sql) or die("Couldn't execut query");
while ($data=sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){
    echo '<option value="'.$data['BusinessEntityID'].'">';
    echo $data['BusinessEntityID']; 
    echo "</option>";
}

?><input type="submit" value="Select Tower">
</select></br></br>
</form>
<table cols="3" cellpadding="0" cellspacing="0" border="0">
<?php

if(empty($_POST['TowerSelect'])){     
    $_SESSION['tower'] = ''; 
} else {  
    $sql = "SELECT BusinessEntityID, FirstName FROM dbo.vKelvin WHERE BusinessEntityID = '".$_POST['TowerSelect']."'";
    $result = sqlsrv_query($conn,$sql) or die("Couldn't execut query");
    while ($row=sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){
        $_SESSION['tower'] = $_POST['TowerSelect']; 
        echo '<tr><td>'.$_SESSION['tower'].'  selected.</td>';
        echo     '<td>'.$row['BusinessEntityID'].'</td>';
        echo     '<td>'.$row['FirstName'].'</td></tr>';
    }
}

?></table></body></html>

注意:虽然回答您的问题并不重要,但最佳做法是在进行数据库调用时使用 PDO 和绑定参数来保护自己免受 SQL 注入和其他讨厌的东西。我建议您研究它以保护您的数据库。干杯!

好的,我得到了解决方案,我的select错了

$sql = "SELECT DISTINCT CountryRegionName FROM dbo.vKelvin ORDER BY CountryRegionName";
$result = sqlsrv_query($conn,$sql) or die("Couldn't execut query");
while ($data=sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){
echo '<option value="'.$data['CountryRegionName'].'">';
echo $data['CountryRegionName']; 
echo "</option>";

if(empty($_POST['TowerSelect'])){     
    $_SESSION['tower'] = ''; 
} else {  
    $sql = "SELECT BusinessEntityID, FirstName FROM dbo.vKelvin WHERE BusinessEntityID = '".$_POST['TowerSelect']."'";
    $result = sqlsrv_query($conn,$sql) or die("Couldn't execut query");
    while ($row=sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){
        $_SESSION['tower'] = $_POST['TowerSelect']; 
        echo '<tr><td>'.$_SESSION['tower'].'  selected.</td>';
        echo     '<td>'.$row['BusinessEntityID'].'</td>';
        echo     '<td>'.$row['FirstName'].'</td></tr>';
    }
}