如何使用PHP與SQLServer數(shù)據(jù)庫(kù)交互的詳細(xì)教程?

php連接sql server需先安裝pdo_sqlsrv和sqlsrv擴(kuò)展,再通過(guò)pdo方式建立連接并執(zhí)行增刪改查操作。具體步驟:1. 安裝驅(qū)動(dòng):windows下添加php_sqlsrv_74_ts.dll與php_pdo_sqlsrv_74_ts.dll;linux使用pecl安裝sqlsrv與pdo_sqlsrv并添加對(duì)應(yīng)擴(kuò)展配置。2. 連接數(shù)據(jù)庫(kù):使用pdo語(yǔ)法統(tǒng)一連接,配置服務(wù)器、數(shù)據(jù)庫(kù)名、用戶(hù)名及密碼,并啟用異常模式捕獲錯(cuò)誤。3. 執(zhí)行數(shù)據(jù)操作:包括查詢(xún)、插入、更新與刪除,推薦使用預(yù)處理語(yǔ)句防止sql注入。4. 調(diào)試問(wèn)題:檢查遠(yuǎn)程訪(fǎng)問(wèn)權(quán)限、tcp/ip協(xié)議狀態(tài)、php日志與sql server日志功能以排查連接或查詢(xún)失敗原因。

如何使用PHP與SQLServer數(shù)據(jù)庫(kù)交互的詳細(xì)教程?

在Web開(kāi)發(fā)中,PHP與SQL Server的結(jié)合使用雖然不如mysql常見(jiàn),但在一些企業(yè)級(jí)項(xiàng)目中依然很實(shí)用。如果你需要用PHP連接SQL Server數(shù)據(jù)庫(kù)并進(jìn)行數(shù)據(jù)操作,這篇文章會(huì)一步步帶你完成整個(gè)流程。

如何使用PHP與SQLServer數(shù)據(jù)庫(kù)交互的詳細(xì)教程?

準(zhǔn)備工作:安裝驅(qū)動(dòng)和擴(kuò)展

PHP默認(rèn)不支持直接連接SQL Server,所以第一步是安裝必要的驅(qū)動(dòng)。目前最常用的是微軟官方提供的PDO_SQLSRV和SQLSRV擴(kuò)展。

如何使用PHP與SQLServer數(shù)據(jù)庫(kù)交互的詳細(xì)教程?

  • windows環(huán)境下

    立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

    • 打開(kāi)php.ini文件
    • 添加 extension=php_sqlsrv_74_ts.dll 和 extension=php_pdo_sqlsrv_74_ts.dll(具體版本號(hào)根據(jù)你的PHP版本而定)
    • 下載對(duì)應(yīng)的dll文件放到 ext 目錄下
  • linux環(huán)境下

    如何使用PHP與SQLServer數(shù)據(jù)庫(kù)交互的詳細(xì)教程?

    • 使用PECL安裝:pecl install sqlsrv pdo_sqlsrv
    • 在php.ini中添加 extension=sqlsrv.so 和 extension=pdo_sqlsrv.so

安裝完成后重啟apachenginx服務(wù),并通過(guò) phpinfo() 查看是否加載成功。

連接SQL Server數(shù)據(jù)庫(kù)

有了擴(kuò)展之后,就可以用PDO或者sqlsrv擴(kuò)展來(lái)連接數(shù)據(jù)庫(kù)了。推薦使用PDO方式,因?yàn)檎Z(yǔ)法統(tǒng)一、可讀性強(qiáng)。

$serverName = "localhost"; $database = "testDB"; $username = "sa"; $password = "yourPassword";  try {     $conn = new PDO("sqlsrv:Server=$serverName;Database=$database", $username, $password);     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) {     die("Connection failed: " . $e->getMessage()); }

注意幾點(diǎn):

  • 數(shù)據(jù)庫(kù)用戶(hù)權(quán)限要配置正確,特別是遠(yuǎn)程訪(fǎng)問(wèn)時(shí)需要開(kāi)放端口和設(shè)置防火墻規(guī)則
  • 如果使用遠(yuǎn)程服務(wù)器,把localhost換成IP地址即可
  • SQL Server默認(rèn)端口是1433,如果被占用或修改過(guò),記得加上端口號(hào)

常見(jiàn)操作:增刪改查

連接成功后,就可以執(zhí)行sql語(yǔ)句了。以下是一些基本操作示例。

查詢(xún)數(shù)據(jù)

$stmt = $conn->query("SELECT * FROM users"); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {     echo $row['name'] . "<br>"; }

插入數(shù)據(jù)

$name = "John"; $email = "john@example.com"; $conn->exec("INSERT INTO users (name, email) VALUES ('$name', '$email')");

更新數(shù)據(jù)

$id = 1; $newEmail = "new@example.com"; $conn->exec("UPDATE users SET email='$newEmail' WHERE id=$id");

刪除數(shù)據(jù)

$id = 2; $conn->exec("DELETE FROM users WHERE id=$id");

建議使用預(yù)處理語(yǔ)句防止sql注入

$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)"); $stmt->execute([$name, $email]);

調(diào)試與錯(cuò)誤處理

連接失敗或查詢(xún)出錯(cuò)時(shí),可以通過(guò)以下方式排查問(wèn)題:

  • 檢查SQL Server是否允許遠(yuǎn)程連接(SSMS中右鍵服務(wù)器 → 屬性 → 連接)
  • 確保TCP/IP協(xié)議已啟用(SQL Server 配置管理器中設(shè)置)
  • 查看PHP日志是否有報(bào)錯(cuò)信息
  • 使用 try-catch 捕獲異常并打印詳細(xì)信息

有時(shí)候連接沒(méi)問(wèn)題但查詢(xún)失敗,可能是字段名寫(xiě)錯(cuò)、權(quán)限不足或字符集不匹配。可以臨時(shí)開(kāi)啟SQL Server的日志功能查看具體執(zhí)行情況。

基本上就這些。PHP連接SQL Server的過(guò)程不算復(fù)雜,但細(xì)節(jié)容易忽略,尤其是在環(huán)境搭建和驅(qū)動(dòng)版本上容易卡住。只要按步驟來(lái),多數(shù)問(wèn)題都能解決。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊14 分享