<?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