在 PHP 中,我们可以使用 mysqli 和 PDO 两种方式来连接和操作数据库。
首先,我们来看 mysqli。
mysqli
mysqli 是 PHP 中操作 MySQL 数据库的扩展库,它支持连接 MySQL 服务器、执行操作(增删改查)和处理结果等功能。
1. 连接数据库
使用 mysqli_connect() 函数来连接数据库,函数需要传入四个参数,分别是主机地址、用户名、密码和数据库名。示例代码如下:
```
$servername = "localhost";
$username = "root";
$password = "123456";
$dbname = "testdb";
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检测连接
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}
echo "连接成功";
```
2. 执行操作
使用 mysqli_query() 函数来执行操作,函数需要传入两个参数,分别是连接和 SQL 语句。示例代码如下:
```
$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "
";
}
} else {
echo "0 结果";
}
mysqli_close($conn);
```
在上面的示例代码中,我们使用了 mysqli_num_rows() 函数来获取结果集中的行数,使用 mysqli_fetch_assoc() 函数来获取单行记录。
3. 处理结果
mysqli 的结果集有多种处理方式,比如上面的示例代码中,我们使用了 mysqli_fetch_assoc() 函数来获取单行记录,还可以使用 mysqli_fetch_row() 函数、mysqli_fetch_array() 函数等。此外,还可以使用 mysqli_affected_rows() 函数来获取受影响的行数,使用 mysqli_insert_id() 函数来获取自增主键的值等。
PDO
PDO 是 PHP 中操作数据库的抽象层,它支持多种数据库,包括 MySQL、SQLite、Oracle 等。
1. 连接数据库
使用 PDO 的构造函数来连接数据库,函数需要传入三个参数,分别是数据库类型、主机地址和数据库名。示例代码如下:
```
$servername = "localhost";
$username = "root";
$password = "123456";
$dbname = "testdb";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// 设置 PDO 错误模式为异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "连接成功";
}
catch(PDOException $e)
{
echo "连接失败: " . $e->getMessage();
}
```
2. 执行操作
使用 PDO 的 prepare() 方法来执行操作,方法需要传入 SQL 语句,然后使用 execute() 方法来执行。示例代码如下:
```
$sql = "SELECT * FROM users";
$stmt = $conn->prepare($sql);
$stmt->execute();
// 设置结果集为关联数组
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$result = $stmt->fetchAll();
if (count($result) > 0) {
foreach($result as $row) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "
";
}
} else {
echo "0 结果";
}
$conn = null;
```
在上面的示例代码中,我们使用了 PDO 的 setFetchMode() 方法来设置结果集为关联数组,使用 fetchAll() 方法来获取所有记录。
3. 处理结果
PDO 的结果集同样有多种处理方式,比如上面的示例代码中,我们使用了 fetchAll() 方法来获取所有记录,还可以使用 fetch() 方法来获取单行记录等。此外,还可以使用 rowCount() 方法来获取受影响的行数,使用 lastInsertId() 方法来获取自增主键的值等。
注意事项
在连接数据库时,需要注意以下几点:
1. 数据库地址使用 IP 地址或者主机名都可以。如果使用 IP 地址,需要确保能够连通。
2. 数据库用户名和密码需要保密,不要在代码中明文保存。
3. 连接数据库时,需要设置字符集,避免乱码。一般来说,可以使用 utf8mb4 字符集,支持更多的字符。
4. 在处理结果集时,需要注意防止 SQL 注入攻击,避免恶意操作或者数据泄漏。可以使用 PDO 的 prepare() 方法或者 mysqli 的 prepare() 方法来减少此类风险。
总结
PHP 中连接和操作数据库是非常常见的操作,需掌握两种方式:mysqli 和 PDO。
mysqli 方式使用较为简单,但只支持 MySQL 数据库;PDO 方式支持多种数据库,并且具有更好的安全性和可扩展性。
在使用这两种方式时,需要注意安全性,避免 SQL 注入攻击。同时,还需要设置字符集,以及正确处理结果集。
壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。
我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!
发表评论 取消回复