从不同的数据库返回数据并以表格形式输出

时间:2017-07-04 07:43:23

标签: php sql-server forms

我在PHP / SQL Server中有一个连接到数据库A的应用程序。在表单中,我想用数据库B(同一服务器)中的数据填充下拉列表。

我做了什么:

  1. 在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();
    }
    
  2. 在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>
    
  3. 选择应该从第二个数据库返回信息,但它没有显示任何内容......我做错了什么?

    谢谢。

1 个答案:

答案 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服务器,那么在设置链接服务器后仍然可以使用此方法。