PHP连接Mysql的三种方法

现在写项目都是天天用框架底层连接数据库都忘记怎么写了,刚好有个东西需要自己手动写一个PHP去执行下,需要连接数据库,然后一脸懵逼…我居然不会底层连接数据库的方法….


面向过程

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$conn = mysql_connect('localhost', 'root', '123456');
if(!$conn){
echo "mysql connect is failed and error msg is:".mysql_error();
}
//连接成功
mysql_query("set names 'utf8'");
mysql_select_db('mytest');
$result = mysql_query('select * from users');
$rows = mysql_fetch_row($result);
?>

这种方式在PHP版本升级中会废除 而且在php5.6以后的版本中都已经提示 mysql_connect 的方法将在未来废除 推荐使用mysqli 或者 pdo的方式来连接数据库

面向对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// $mysqli = mysqli_init(); 官方文档上是这样的
//同时在new的时候也可以带参数
// $mysqli = new Mysqli(‘host’, ’db_username’, ’db_password’, ’db_name’, ’db_port’);
$mysqli = new Mysqli();
//也可以使用这种连接
$mysqli->real_connect('localhost', 'root', '', 'mytest');
$sql = 'select * from ceshi';
$result = $mysqli->query($sql);
$res = [];
while (false != ($row=$result->fetch_assoc())) {
$res[] = $row;
}
echo "<pre>";
print_r($res);
exit();
?>

Mysqli是 Mysql 的扩展他同时也支持过程过的操作同时也支持面向对象的操作

使用PDO的方式

PDO 其实就是 PHP Database Object 即PHP数据库对象 它提供了一种统一的php和数据库交互的方法

这是目前比较流行的一种连接数据库的方法。它的优势在于:只要正确提供数据源,余下对于数据库的基本操作都是一样的。也就是说,同一段代码既可以同MySQL交互,也可以和SQLite3交互,当然也可以和PostgreSQL进行交互,前提是你提供了正确的数据源。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$dns = 'mysql:dbname=mytest;host=127.0.0.1';
$db_username = 'root';
$db_password = '';
try {
$pdo = new PDO($dns, $db_username, $db_password);
} catch (PDOException $e) {
echo "PDO connect is failed ".$e->getMessage();
}
$sql = "select * from ceshi";
$result = $pdo->query($sql);
// $result = $pdo->prepare($sql);
// $result->execute();
// object(PDOStatement)[2]
// public 'queryString' => string 'select * from ceshi' // (length=19)
$arr = [];
for ($i = 0; $row = $result->fetchObject(); $i++) {
$arr[] = (array)$row;
}
echo "<pre>";
print_r($arr);
exit();

其他

1
2
3
4
5
6
7
8
# Mysql
$dns = 'mysql:dbname=mytest;host=127.0.0.1';
# SQLite3
$dsn='sqlite3:“C:\sqlite\user.db”';
# PostgreSQL
$dsn='pgsql:host='.$dbhost.' port=5432 dbname='.$dbdatabase.' user='.$username.' password='.$userpass;

-------------The End-------------