【问题标题】:PHP getting records from SQL server using Sqlsrv_queryPHP 使用 Sqlsrv_query 从 SQL 服务器获取记录
【发布时间】:2025-12-16 10:50:01
【问题描述】:

我有一个名为 dbo.[DATABASE$Employee] 的数据库表,我想从表中获取记录,但收到一条错误消息

注意:未定义变量:第 24 行 C:\xampp\htdocs\kekportal\test1.php 中的员工

注意:未定义变量:第 28 行 C:\xampp\htdocs\kekportal\test1.php 中的员工

注意:未定义变量:第 28 行 C:\xampp\htdocs\kekportal\test1.php 中的员工

我的代码:

$pdo = new PDO("sqlsrv: Server=U4BUO1D;Database=AmanfoHR","**","**");
$stmt = $pdo->prepare("SELECT
dbo.[DATABASE$Employee].No_ AS empID,
dbo.[DATABASEG$Employee].[First Name] AS fname
FROM
dbo.[DATABASE$Employee]");
$stmt->execute(); 
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
    echo $row['fname'];
}   

【问题讨论】:

  • 使用 PDO 可能会更好
  • $pdo = new PDO("sqlsrv: Server=SERV;Database=DB","",""); $sql = 'SELECT dbo.[DATABASE$Employee].No_ AS empID, dbo.[DATABASE$Employee].[First Name] AS fname, FROM dbo.[DATABASE$Employee]'; $q = $pdo->查询($sql); $q->setFetchMode(PDO::FETCH_ASSOC); ?> fetch()):?> 我有错误“致命错误:在第 30 行的 C:\xampp\htdocs\kekportal\test1.php 中的非对象上调用成员函数 setFetchMode()”
  • 请编辑您的问题

标签: php sql-server sqlsrv


【解决方案1】:

我猜prepare 语句将$Employee 作为变量并且这个变量没有被定义。更改您的查询部分:

$stmt = $pdo->prepare("SELECT
e.No_ AS empID,
e.[First Name] AS fname
FROM
dbo.[DATABASE"."$"."Employee] e");

您还可以使用其他代码来处理 SQL Server。

$serverName = "U4BUO1D";
$connectionInfo = array("Database"=>"AmanfoHR", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

$tsql = "
SELECT  No_ AS empID,
        [First Name] AS fname
FROM dbo.[DATABASE"."$"."Employee];";

$stmt = sqlsrv_query( $conn, $tsql);

if( $stmt === false ) {
    echo "Error in executing query.</br>";
    die( print_r( sqlsrv_errors(), true));
}

while ($obj = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    echo $obj['fname'];
}

sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);

您需要在 php.ini 中启用这两个扩展:

extension=php_pdo_sqlsrv.dll
extension=php_sqlsrv.dll

【讨论】: