<?php $serverName = "服務器名稱\SQLEXPRESS"; $connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password" ); $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn === false ) { die( print_r( sqlsrv_errors() ); } $sql = "INSERT INTO Table_1 ( [id], [data] ) VALUES (?, ?)"; $params = array(1, "some data"); $stmt = sqlsrv_query( $conn, $sql, $params); if( $stmt === false ) { die( print_r( sqlsrv_errors() ); }
執行sql語句使用的是sqlsrv_query方法, 第一個參數需要傳數據庫連接符, 第二個參數是sql語句結構綁定式, 第三個參數是語句内要綁定進的問號參數值。
這裡說一下SQL Server的sql和MySQL語句在遇到字段和SQL關鍵字相同的解決。MySQL是在字段前後加上一對`(鍵盤數字1左邊)符號來告訴服務耑這是字段, SQL Server是在字段前後加上中括號[]來解決。如果可以不撞上關鍵字盡量不要使用關鍵字來當表字段名。
5.6的ODBC敺動故障
就算php5.6安裝了對應的擴展, 也會報錯, 連接數據庫時返回錯誤當中會含有Failed to get DB handle: SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver 11 for SQL Server to communicate with SQL Server. Access the following URL to download the ODBC Driver 11 for SQL Server for x86: http://go.microsoft.com/fwlink/?LinkId=163712字樣, 不要聽信報錯信息裡的這個鏈接, 實際正確的下載鏈接是https://www.microsoft.com/en-us/download/details.aspx?id=36434