【连接数据库】PHP7的连接数据库的三种方法【原创】
2022-07-28 15:20:24
135
{{single.collect_count}}
使用原生PHP来连接MySQL的方法有 MySQL库、MySQLi库以及PDO,由于PHP 7已经废除 MySQL库,所以建议使用MySQLi和PDO。

连接 MySQLi有两种风格:
  • 面向对象风格(推荐)
  • 过程化风格

面向对象风格:
1
<?php
2
3
$mysqli = new mysqli('localhost', 'root', '123456', 'test_laravel');
4
5
if ($mysqli->connect_error) {
6
    die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
7
}
8
9
$result = $mysqli->query('select * from articles');
10
$row = $result->fetch_array(MYSQLI_ASSOC);
11
print_r($row);
12
13
// 关闭mysql连接
14
$mysqli->close();
15
运行:
Array([id] => 1[title] => My new title[body] => First Body[created_at] => 2017-05-22 11:10:20[updated_at] => 2017-05-22 11:30:58[published_at] => 2017-05-22 11:10:00[excerpt] =>)


fetch_array方法如果不带参数的话,则默认是MYSQLI _BOTH,输出是这样的:
 
1
(
2
  [0] => 1
3
  [id] => 1
4
  [1] => My new title
5
  [title] => My new title
6
  [2] => First Body
7
  [body] => First Body
8
  [3] => 2017-05-22 11:10:20
9
  [created_at] => 2017-05-22 11:10:20
10
  [4] => 2017-05-22 11:30:58
11
  [updated_at] => 2017-05-22 11:30:58
12
  [5] => 2017-05-22 11:10:00
13
  [published_at] => 2017-05-22 11:10:00
14
  [6] =>
15
  [excerpt] =>
16
)
也可以选择MYSQLI _NUM
Array([0] => 1[1] => My new title[2] => First Body[3] => 2017-05-22 11:10:20[4] => 2017-05-22 11:30:58[5] => 2017-05-22 11:10:00[6] =>)

一般来说,选择MySQLI _ASSOC

面向过程化风格:
 
1
<?php
2
3
$mysqli = mysqli_connect('localhost', 'root', '123456', 'test_laravel');
4
5
if (mysqli_connect_error()) {
6
    die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
7
}
8
9
$result = mysqli_query($mysqli, 'select * from articles');
10
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
11
print_r($row);
12
13
// 关闭mysql连接
14
mysqli_close($mysqli);
15
运行和上面一致。

使用PDO连接mysql:
<?phptry {$PDO = new PDO('mysql:host=localhost;dbname=test_laravel', 'root', '123456');$result = $PDO->query('select * from articles');$row = $result->fetch(PDO::FETCH_ASSOC);print_r($row);// 关闭mysqi连接$PDO = null;} catch (PDOException $e) {die('Connection failed: ' . $e->getMessage());}


PDO的fetch方法不带参数的话,默认是:PDO::FETCH_BOTH,也可以PDO::FETCH_NUM和PDO::FETCH_ASSOC等,一般来说选择PDO::FETCH_ASSOC即可。

总结:使用PDO或者是MySQLi都是可以的,但网上更推荐使用PDO来连接数据库,这是因为PDO支持12种不同的数据库驱动程序,而MySQLi只能支持MySQL,另外PDO的性能也更高。




回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}