发布于2026-07-20 阅读(0)
扫一扫,手机访问
配置PHP连接MSSQL,这事儿说难不难,但细节上要是没把握好,确实容易卡住。我遇到过不少读者,装完驱动后各种报错,最后发现是DLL版本没选对。所以,咱们今天就把整个流程拆开,一步步讲清楚。
第一步,先把驱动给装上。找到SQLSRV58.exe这个安装包,找个地方建个新文件夹,专门放驱动文件。这样后续找起来方便,免得东翻西找。当然,如果你喜欢追新,也可以直接去微软官网下载最新版。
驱动装好后,重点来了:复制对应版本的DLL文件到PHP的ext目录下。在刚才安装驱动的文件夹里,找到适合你PHP版本的DLL。以PHPStudy里的PHP为例,其ext目录通常位于:
…/phpstudy_pro/Extensions/php/php7.3.4nts/ext/
需要把下面这两个文件复制过去:
php_sqlsrv_73_nts_x64.dll
php_pdo_sqlsrv_73_nts_x64.dll
接下来,修改PHP配置文件php.ini。这个文件一般在PHP安装目录的根下,比如:
…/phpstudy_pro/Extensions/php/php7.3.4nts/
找到它,打开,在文件末尾添加两行:
extension=php_sqlsrv_73_nts_x64.dll
extension=php_pdo_sqlsrv_73_nts_x64.dll
保存,重启Web服务。至此,驱动配置就算完成了。
驱动装好了,接下来就是怎么用代码去操作数据库。先看连接数据库的代码,这是所有操作的基础:
function OpenConnection()
{
try {
$serverName = "localhost"; // 默认端口
// $serverName = "localhost,3306"; // 指定端口
$connectionOptions = array(
"Database" => "AdventureWorks",
"Uid" => "MyUser",
"PWD" => "MyPassword"
);
$conn = sqlsrv_connect($serverName, $connectionOptions);
if ($conn == false) {
die(FormatErrors(sqlsrv_errors()));
}
} catch (Exception $e) {
echo("Error!");
}
}
连接成功后,执行读取操作就顺理成章了:
function ReadData()
{
try {
$conn = OpenConnection();
$tsql = "SELECT [CompanyName] FROM SalesLT.Customer";
$getProducts = sqlsrv_query($conn, $tsql);
if ($getProducts == FALSE) {
die(FormatErrors(sqlsrv_errors()));
}
$productCount = 0;
while ($row = sqlsrv_fetch_array($getProducts, SQLSRV_FETCH_ASSOC)) {
echo($row['CompanyName']);
echo("
");
$productCount++;
}
sqlsrv_free_stmt($getProducts);
sqlsrv_close($conn);
} catch (Exception $e) {
echo("Error!");
}
}
最后,演示一下插入操作。注意这里用到了OUTPUT INSERTED.ProductID来获取新插入记录的ID:
function InsertData()
{
try {
$conn = OpenConnection();
$tsql = "INSERT SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate)
OUTPUT INSERTED.ProductID
VALUES ('SQL Server 1', 'SQL Server 2', 0, 0, getdate())";
$insertReview = sqlsrv_query($conn, $tsql);
if ($insertReview == FALSE) {
die(FormatErrors(sqlsrv_errors()));
}
echo "Product Key inserted is :";
while ($row = sqlsrv_fetch_array($insertReview, SQLSRV_FETCH_ASSOC)) {
echo($row['ProductID']);
}
sqlsrv_free_stmt($insertReview);
sqlsrv_close($conn);
} catch (Exception $e) {
echo("Error!");
}
}
这三个函数基本覆盖了日常开发中最常用的操作。当然,实际项目中还需要考虑错误处理、事务管理等问题,但底层的连接和基础CRUD,上面这些代码已经足够搭建起一个完整的操作框架了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8