PHP MySQL 数据库:连接 MySQL 服务器 1 个改进

PHP连接数据库

使用 PHP 操作 MySQL数据库是进行 Web 开发的必然要求之一,PHP 中提供了完整的操作MySQL数据库的函数,这些函数包括了从连接数据库、执行 SQL语句、处理数据结果集到关闭数据库的方方面面。通过这些函数,使基于MySQL 数据库的 Web开发高效而简单。通常 PHP 访问 MySQL数据库的步骤如下图所示。

mysql

在此之前,我们需要确保开启了PHP中的mysqli 扩展。以 Windows 系统为例,开启 mysqli 扩展就是将php.ini配置文件中extension=mysqliphp7)或extension=php_mysqli.dllphp5)一项的注释去掉即可。

在 PHP 早期版本中我们使用 MySQL 扩展。但该扩展在 2012 年开始不建议使用。

开启成功后可以使用 phpinfo()函数查看,示例代码如下:

<?php phpinfo(); ?>

在输出的界面中搜索 mysqli,出现如下界面则表示开启成功。

phpinfo

连接MySQL数据库

前面我们成功开启了 PHP中的 mysqli扩展,使用扩展中的 mysqli_connect()函数就可以实现MySQL数据库的连接,函数语法格式如下:

<?php $con=mysqli_connect("localhost","wrong_user","my_password","my_db"); // 检查连接 if (!$con) { die("连接错误: " . mysqli_connect_error()); } ?>

定义和用法

mysqli_connect()函数打开一个到 MySQL 服务器的新的连接。

语法

mysqli_connect(host,username,password,dbname,port,socket);
参数 描述
host 可选。规定主机名或 IP 地址。
username 可选。规定 MySQL 用户名。
password 可选。规定 MySQL 密码。
dbname 可选。规定默认使用的数据库。
port 可选。规定尝试连接到 MySQL 服务器的端口号。
socket 可选。规定 socket 或要使用的已命名 pipe。

另外需要注意的是,mysqli_connect() 函数是mysqli::__construct() 函数的别名,所有使用对象 mysqli()也可以实现连接数据库。

示例

下面通过一个简单的代码实现连接数据库。

1. 面向过程风格的写法

<?php $host = 'localhost'; $username = 'root'; $password = 'root'; $dbname = 'test'; $port = '3306'; $link = @mysqli_connect($host,$username,$password,$dbname,$port); // 连接到数据库 if($link){ mysqli_set_charset($link,'UTF-8'); // 设置数据库字符集 $sql = 'select * from user'; // SQL 语句 $result = mysqli_query($link, $sql); // 执行 SQL 语句,并返回结果 $data = mysqli_fetch_all($result); // 从结果集中获取所有数据 mysqli_close($link); }else{ die('数据库连接失败!'); } echo '<pre>'; print_r($data); ?>

2. 面向对象风格的写法

<?php $host = 'localhost'; $username = 'root'; $password = 'root'; $dbname = 'test'; $mysql = new Mysqli($host, $username, $password, $dbname); if($mysql -> connect_errno){ die('数据库连接失败:'.$mysql->connect_errno); }else{ $mysql -> set_charset('UTF-8'); // 设置数据库字符集 $sql = 'select * from user'; // SQL 语句 $result = $mysql -> query($sql); $data = $result -> fetch_all(); $mysql -> close(); } echo '<pre>'; print_r($data); ?>
本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!