我在PHP / SQL Server中有一个连接到数据库A的应用程序。在表单中,我想用数据库B(同一服务器)中的数据填充下拉列表。
我做了什么:
在config.php文件中我输入了:
try {
$handler = new PDO("sqlsrv:Server=server1;Database=attstocuri;ConnectionPooling=0", "sa", "");
$handler -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (Exception $ex) {
echo $ex->getMessage();
die();
}
和
try {
$handler2 = new PDO("sqlsrv:Server=server1;Database=Legend;ConnectionPooling=0", "sa", "");
$handler2 -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (Exception $ex) {
echo $ex->getMessage();
die();
}
在index.php文件中(位于表单中):
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<select name="customerid">
<?php
$stmt2 = $handler2 -> query ('SELECT customer.id, customer.name from Legend.dbo.Customer');
while ($row = $stmt2 ->fetch()){
echo "<option value='".$row["customer.id"]."'>".$row["customer.name"]."</option>";
}
?>
</select>
<input type="text" class="form-control" name="productcode" placeholder="Cod articol" value="<?php if(isset($error)){ echo $_POST['productcode'];} ?>"></input><br/>
<input type="number" class="form-control" name="quantity" placeholder="Cantitate fara stoc" value="<?php if(isset($error)){ echo $_POST['quantity'];} ?>"></input><br/>
<input type="submit" name="submit" class="btn btn-primary">
</form>
选择应该从第二个数据库返回信息,但它没有显示任何内容......我做错了什么?
谢谢。
答案 0 :(得分:1)
您好我不是PHP dev,但您可以从DB角度解决这个问题。如果两个数据库都在同一个SQL Server实例中,那么只需在App DB中创建一个视图,然后重新设置要使用的下拉选项,并在应用程序中使用与任何其他表或视图相同的视图。
在attstocuri运行中
CREATE VIEW MyDropDown AS
SELECT
customer.id
, customer.name
FROM Legend.dbo.Customer
GO
然后您可以从同一个连接中引用它。您需要确保应用程序连接到attstocuri的用户的权限,但是对Legend中的Customer表具有权限。
如果数据库不在同一台服务器上,或者其他数据库不是SQL服务器,那么在设置链接服务器后仍然可以使用此方法。