首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

PHP 調用 SQL Server 2000 存儲過程實現分頁:mssql_init/bind/execute 經典用法

     編輯:關於SqlServer

PHP 端調用代碼

$start = isset($_GET['start']) ? (int)$_GET['start'] : 0;
$end   = isset($_GET['end'])   ? (int)$_GET['end']   : 0;
$pageSize = isset($_GET['pagesize']) ? (int)$_GET['pagesize'] : 20;

$link = mssql_connect('localhost', 'sa', 'password') or die('連接失敗');
mssql_select_db('MyDB', $link);

$stmt = mssql_init('Bigdatabase', $link) or die('初始化失敗');
mssql_bind($stmt, '@pagesize', $pageSize, SQLINT4);
mssql_bind($stmt, '@start', $start, SQLINT4);

// 執行並獲取結果集
$result = mssql_execute($stmt, true); // true 返回結果集資源
if (!$result) die('執行失敗');

// 輸出數據
while ($row = mssql_fetch_assoc($result)) {
    echo $row['username'] . '
'; } // 釋放資源 mssql_free_result($result); mssql_free_statement($stmt); // 可選:清理 tempdb 日志(舊版本建議) mssql_query("DUMP TRANSACTION tempdb WITH NO_LOG", $link);

SQL Server 2000 存儲過程:動態 SQL 分頁

CREATE PROCEDURE Bigdatabase
    @pagesize INT,
    @start INT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @bsql NVARCHAR(4000);
    SET @bsql = N'SELECT TOP ' + CAST(@pagesize AS NVARCHAR) +
                N' username FROM person ' +
                N'WHERE id NOT IN (SELECT TOP ' + CAST(@start AS NVARCHAR) +
                N' id FROM person ORDER BY id ASC) ORDER BY id ASC';
    EXEC sp_executesql @bsql;
END;

關鍵點解析

  • mssql_init 準備存儲過程,mssql_bind 綁定參數類型(SQLINT4 對應 INT)。
  • mssql_execute($stmt, true) 第二參數 true 表示返回結果集資源,false 僅執行無返回。
  • 存儲過程使用 NOT IN (TOP N ...) 經典分頁模式(SQL 2000 無 ROW_NUMBER)。
  • DUMP TRANSACTION tempdb WITH NO_LOG 截斷 tempdb 日志,防止長時間運行日志暴漲(SQL 2000/2005 常用,2008+ 建議設置 SIMPLE 恢復模式)。

現代化遷移建議

  1. 棄用 mssql_* 擴展:PHP 7.0+ 已移除,改用 PDO_SQLSRV 或 sqlsrv 驅動(微軟官方維護)。
  2. 參數化查詢防注入:
    $stmt = $pdo->prepare("EXEC Bigdatabase @pagesize=?, @start=?");
    $stmt->execute([$pageSize, $start]);
  3. 分頁改用 OFFSET @start ROWS FETCH NEXT @pagesize ROWS ONLY(SQL 2012+)或 ROW_NUMBER(2005+)。
  4. 升級 SQL Server 2000 → 2019,獲得安全補丁、性能優化、新功能支持。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved