在实际的工作中,有时候我们需要用到sqlserver数据库,那么下来我们看看sqlserver的连接。
一、查看php 是否安装了 sqlsrv 扩展, 使用命令 php -m
二、如果没安装会报错 laravel could not find driver sqlsrv
三、下载安装 php 对应的sqlsrv 扩展 安装:
解压后进入目录安装:
使用phpize7.2安装。安装完成后会生成sqlsrv.so文件,添加到php.ini中,正常的情况下我们可以看到:
那么就是已经安装成功了!
接着我们在config/database.php加入下面的代码:
'sqlsrv' => [
'driver' => 'sqlsrv',
'url' => env('DATABASE_URL'),
'host' => env('SQL_DB_HOST', 'localhost'),
'port' => env('SQL_DB_PORT', '1433'),
'database' => env('SQL_DB_DATABASE', 'forge'),
'username' => env('SQL_DB_USERNAME', 'forge'),
'password' => env('SQL_DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
],
SQL_DB_HOST=192.168.0.200
SQL_DB_PORT=6650
SQL_DB_DATABASE=lch-new
SQL_DB_USERNAME=lch
SQL_DB_PASSWORD=ai202109
接着重新生成一下配置文件:
接着我们来测试一下:
先写个连接代码:
private $host;
private $port;
private $db;
private $uname;
private $password;
const PATH = 'database.connections.sqlsrv.';
public function __construct()
{
$this->host = config(self::PATH.'host');
$this->port = config(self::PATH.'port');
$this->db = config(self::PATH.'database');
$this->uname = config(self::PATH.'username');
$this->password = config(self::PATH.'password');
}
private function getConn(){
$serverName = "tcp:".$this->host.",".$this->port;
$database = $this->db;
$uid = $this->uname;
$pwd = $this->password;
$connectionOptions = array("Database"=>$database, "Uid"=>$uid, "PWD"=>$pwd);
$conn = sqlsrv_connect($serverName, $connectionOptions);
return $conn;
}
$sql = 'select * from test_order limit 20';
$getProducts = sqlsrv_query($this->getConn(), $sql);
打印一下结果:
可以看到执行成功!
SQL Server Driver常见的 包含以下函数:
函数 说明
sqlsrv_begin_transaction 开始事务。
sqlsrv_cancel 取消语句;并放弃相应语句的所有未决结果。
sqlsrv_client_info 提供有关客户端的信息。
sqlsrv_close 关闭连接。释放与相应连接关联的所有资源。
sqlsrv_commit 提交事务。
sqlsrv_configure 更改错误处理和日志记录配置。
sqlsrv_connect 创建一个连接,并将其打开。//第一参数是数据库地址,第二参数是数组(数据库名,登陆名,密码)
sqlsrv_errors 返回关于上一操作的错误和/或警告信息。
sqlsrv_execute 执行预定义语句。
sqlsrv_fetch 使下一行的数据可供读取。
sqlsrv_fetch_array 以数值索引数组、关联数组或这两种数组的形式检索下一行的数据。//调用形式 while(){$row['字段']}
sqlsrv_fetch_object 以对象形式检索下一行的数据。调用形式 //while(){$row->字段}
sqlsrv_field_metadata 返回字段元数据。
sqlsrv_free_stmt 关闭语句。释放与相应语句关联的所有资源。
sqlsrv_get_config 返回指定配置设置的值。
sqlsrv_get_field 按索引检索当前行中的字段。可以指定 PHP 返回类型。
sqlsrv_has_rows 检测结果集是否具有一行或多行。//判断数据库是否有查询结果好用
sqlsrv_next_result 使下一结果可供处理。
sqlsrv_num_rows 报告结果集中的行数。//要求静态或键集游标;如果您使用前进游标或动态游标,将返回 false。(前进游标是默认设置。)