1. PHP连接MSSQL数据库
在使用PHP管理MSSQL数据库之前,首先需要建立PHP和MSSQL数据库之间的连接。PHP提供了两个扩展来操作MSSQL数据库:
PHP MSSQL 扩展:使用 Microsoft SQL Server 数据库。
PHP PDO_SQLSRV 扩展:使用 Microsoft SQL Server 数据库,并使用 PDO 预处理语句。
在这里,我们使用PHP PDO_SQLSRV扩展连接MSSQL数据库,首先需要下载并安装相应的驱动程序。根据PHP官网推荐,可以下载Windows下的 Microsoft Drivers for PHP for SQL Server,下载地址为:https://docs.microsoft.com/en-us/sql/connect/php/system-requirements-for-the-php-driver?view=sql-server-ver15,下载安装后,可以在php.ini文件中添加以下配置来启用扩展:
extension=pdo_sqlsrv
之后,可以使用PDO类来创建数据库连接,PDO的构造函数如下:
$conn = new PDO('sqlsrv:Server=<server name>;Database=<database name>',<username>,<password>);
其中,<server name> 为数据库服务器名称,<database name> 为要连接的数据库名称,<username> 和 <password> 为数据库服务器的登录用户名和密码。
2. PHP操作MSSQL数据库
2.1 查询数据
在PHP中,使用PDO的query方法可以执行SQL语句,并获取查询结果集,示例代码如下:
$sql = "SELECT * FROM <table name>";
$result = $conn->query($sql);
// 遍历结果集
foreach($result as $row){
echo $row['col_name'].'<br>';
}
示例中,<table name> 为要查询的表名,$result为查询结果集。
2.2 插入数据
在PHP中,可以使用PDO的prepare方法创建预处理语句,再将要插入的数据传入预处理语句中执行,示例代码如下:
$sql = "INSERT INTO <table name> (col_name1, col_name2, ...) VALUES (?, ?, ...)";
$stmt = $conn->prepare($sql);
$stmt->bindParam(1, $value1);
$stmt->bindParam(2, $value2);
// ...
// 执行预处理语句
$stmt->execute();
示例中,<table name>为要插入数据的表名,参数使用问号占位符,然后用bindParam方法将要插入的参数和占位符绑定,最后执行预处理语句即可将数据插入到数据库中。
2.3 更新数据
在PHP中,可以使用PDO的prepare方法创建预处理语句,然后使用bindParam方法将要更新的数据和占位符绑定,示例代码如下:
$sql = "UPDATE <table name> SET col_name1=?, col_name2=? WHERE id=?";
$stmt = $conn->prepare($sql);
$stmt->bindParam(1, $value1);
$stmt->bindParam(2, $value2);
$stmt->bindParam(3, $id);
// 执行预处理语句
$stmt->execute();
示例中,<table name>为要更新数据的表名,使用SET语句指定要更新的列和值,使用WHERE语句指定要更新的行,参数同样使用问号占位符,然后使用bindParam方法将要更新的数据和占位符绑定,最后执行预处理语句即可将数据更新到数据库中。
2.4 删除数据
在PHP中,可以使用PDO的prepare方法创建预处理语句,然后使用bindParam方法将要删除的数据和占位符绑定,示例代码如下:
$sql = "DELETE FROM <table name> WHERE id=?";
$stmt = $conn->prepare($sql);
$stmt->bindParam(1, $id);
// 执行预处理语句
$stmt->execute();
示例中,<table name>为要删除数据的表名,使用WHERE语句指定要删除的行,参数同样使用问号占位符,然后使用bindParam方法将要删除的数据和占位符绑定,最后执行预处理语句即可将数据从数据库中删除。
3. 使用ORM框架管理MSSQL数据库
除了使用原生的PDO操作数据库外,还可以使用ORM框架来管理MSSQL数据库。ORM框架可以将数据库表映射为对象,通过对象操作数据库,简化了开发过程。
PHP中比较流行的ORM框架有:
Doctrine ORM:http://www.doctrine-project.org/
PHP ActiveRecord:https://github.com/phpactive record/php-activerecord
Propel ORM:http://propelorm.org/
在这里,我们使用的是Doctrine ORM。实际使用中,需要先安装Doctrine ORM,可以通过Composer来安装,执行以下命令:
composer require doctrine/orm
安装完成后,需要在PHP代码中引入Doctrine的自动加载器,然后使用PDO连接MSSQL数据库,并将连接对象传入Doctrine中,示例代码如下:
require_once 'vendor/autoload.php';
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
$paths = array(__DIR__ . "/src");
$isDevMode = false;
// 数据库配置
$dbParams = array(
'driver' => 'pdo_sqlsrv',
'host' => 'localhost',
'user' => 'dbuser',
'password' => 'dbpass',
'dbname' => 'dbname',
);
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$entityManager = EntityManager::create($dbParams, $config);
在上述代码中,$paths数组为实体类所在的路径,$isDevMode为是否为开发模式,$dbParams为数据库连接配置。
接下来,需要创建实体类,并使用Doctrine的注解来描述实体类的属性、关联和索引等信息,示例代码如下:
namespace Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="user")
*/
class User
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
protected $id;
/**
* @ORM\Column(type="string", length=255)
*/
protected $name;
/**
* @ORM\Column(type="string", length=255)
*/
protected $email;
// ...
}
在实体类中,@ORM\Entity注解表示该类为一个实体类,@ORM\Table注解指定对应的数据表名,@ORM\Id表示该属性为主键,@ORM\GeneratedValue(strategy="AUTO")表示自动递增,@ORM\Column注解表示该属性对应的列名和属性类型。
创建实体类后,就可以使用Doctrine提供的EntityManager类操作实体了,示例代码如下:
// 查询所有用户
$userRepository = $entityManager->getRepository('Entity\User');
$users = $userRepository->findAll();
// 插入用户数据
$user = new User();
$user->setName('test');
$user->setEmail('test@example.com');
$entityManager->persist($user);
$entityManager->flush();
// 更新用户数据
$user = $userRepository->find(1);
$user->setName('new name');
$entityManager->flush();
// 删除用户数据
$user = $userRepository->find(1);
$entityManager->remove($user);
$entityManager->flush();
在上述代码中,首先通过getRepository方法获取User的Repository,然后可以使用Repository的findAll方法查询所有用户数据;插入数据使用EntityManager的persist方法插入数据到数据库中;更新数据使用Repository的find方法查询指定用户数据,然后修改属性值,再使用EntityManager的flush方法保存修改的数据到数据库中;删除数据同样使用Repository的find方法查询指定用户数据,然后使用EntityManager的remove方法删除数据,最后使用flush方法将删除操作同步到数据库中。
总结
本文介绍了在PHP中管理MSSQL数据库的方法,包括使用PDO操作数据库、使用ORM框架操作数据库等,通过实例代码演示了查询数据、插入数据、更新数据和删除数据等操作。通过本文的介绍,读者可以更加深入了解PHP管理MSSQL数据库的方式和操作方法。