PHP 数据库操作

PHP 数据库操作

菜鸟驿站PHP学习笔记

PHP连接MySQL

PHP连接数据库主要用到mysqli_connect()函数

函数语法:

1
mysqli_connect(host,username,password,dbname,port,socket);

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

首先通过 phpinfo() 查看是否安装成功
在这里插入图片描述

下面MySQLi面向对象和面向过程的思想连接数据库

创建连接

实例1:MySQLi - 面向对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$servername = "localhost";
$username = "username";
$password = "password";

// 创建连接
$conn = new mysqli($servername, $username, $password);

// 检测连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>

注意:在以上面向对象的实例中 $connect_error 是在 PHP 5.2.9 和 5.3.0 中添加的。如果你需要兼容更早版本 请使用以下代码替换:

1
2
3
4
// 检测连接
if (mysqli_connect_error()) {
die("数据库连接失败: " . mysqli_connect_error());
}

实例2:MySQLi - 面向过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$servername = "localhost";
$username = "username";
$password = "password";

// 创建连接
$conn = mysqli_connect($servername, $username, $password);

// 检测连接
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "连接成功";
?>

注意:默认端口号为3306,如果端口号修改,可以为数据库参数添加空字符串,如:

1
mysqli_connect($servername, $username, $password,"",port);

关闭连接

连接在脚本执行完后会自动关闭。你也可以使用以下代码来关闭连接:

实例 (MySQLi - 面向对象)

1
$conn->close();

实例 (MySQLi - 面向过程)

1
mysqli_close($conn);

数据库连接编码问题

1
2
3
4
5
6
7
//php5
mysql_query("set character set 'utf8'");//读库
mysql_query("set names 'utf8'");//写库

//php7
mysqli_query($conn, "set character set 'utf8'");//读库
mysqli_query($conn,"set names 'utf8'");//写库

创建数据库

创建 MySQL数据库语句:

1
CREATE DATABASE database_name;

创建一个数据库demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
#PHP MySQL 创建数据库
header("content-type:text/html;charset=utf-8");
$servername = "localhost";
$username = "username";
$password = "pasword";

// 创建连接
$conn = mysqli_connect($servername, $username, $password);
// 检测连接
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}

// 创建数据库
$sql = "CREATE DATABASE demo";
if (mysqli_query($conn, $sql)) {
echo "数据库创建成功";
} else {
echo "Error creating database: " . mysqli_error($conn);
}

mysqli_close($conn);
?>

数据库创建成功
在这里插入图片描述

创建数据表

创建 MySQL 数据表语句:

1
CREATE DATABASE table_name;

创建数据表MyDemo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
#PHP MySQL 创建数据表MyDemo
header("content-type:text/html;charset=utf-8");
$servername = "localhost";
$username = "username";
$password = "pasword";
$dbname = "demo";

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检测连接
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}

// 使用 sql 创建数据表
$sql = "CREATE TABLE MyDemo (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
sex VARCHAR(30) NOT NULL,
age INT(3)
)";

if (mysqli_query($conn, $sql)) {
echo "数据表MyDemo创建成功";
} else {
echo "创建数据表错误: " . mysqli_error($conn);
}

mysqli_close($conn);
?>

创建成功
在这里插入图片描述

插入数据

INSERT INTO 语句通常用于向 MySQL 表添加新的记录:

1
2
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

往表里插入一条数据

1
2
INSERT INTO mydemo (id, name, sex ,age)
VALUES (1001, '张三', '男',18)

代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
#PHP MySQL 插入数据
header("content-type:text/html;charset=utf-8");
$servername = "localhost";
$username = "username";
$password = "pasword";
$dbname = "demo";

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检测连接
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
mysqli_query($conn,"set names utf8");
$sql = "INSERT INTO mydemo (id, name, sex ,age)
VALUES (1001, '张三', '男',18)";

if (mysqli_query($conn, $sql)) {
echo "新记录插入成功";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);
?>

插入数据成功
在这里插入图片描述
插入多条数据

1
2
3
4
5
6
7
8
9
10
11
12
13
$sql = "INSERT INTO mydemo (id, name, sex ,age)
VALUES (1002, '李四', '女',19);";
$sql .= "INSERT INTO mydemo (id, name, sex ,age)
VALUES (1003, '王五', '男',20);";
$sql .= "INSERT INTO mydemo (id, name, sex ,age)
VALUES (1004, '刘六', '男',21);";

#注意此处改为mysqli_multi_query函数,执行多个针对数据库的查询
if (mysqli_multi_query($conn, $sql)) {
echo "新记录插入成功";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

表中新增3条数据
在这里插入图片描述

读取数据

SELECT 语句用于从数据表中读取数据:

1
SELECT column_name(s) FROM table_name

我们可以使用 * 号来读取所有数据表中的字段:

1
SELECT * FROM table_name

在test数据库中student表的内容:
在这里插入图片描述
从student表中读取数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
#PHP MySQL 读取mydemo表数据
header("content-type:text/html;charset=utf-8");
$servername = "localhost";
$username = "username";
$password = "pasword";
$dbname = "demo";

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}
//设置返回数据的字符集
mysqli_query($conn,"set character set 'utf8'");

$sql = "SELECT * FROM mydemo";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
// 输出数据
while($row = mysqli_fetch_assoc($result)) {
echo "ID: " . $row["id"]. " - 姓名: " . $row["name"]. " - 性别: ". $row["sex"]."-年龄: " . $row["age"]. "<br>";
}
} else {
echo "0 结果";
}

mysqli_close($conn);
?>

读到了表中的数据
在这里插入图片描述

读出来的数据不够美观,参照大佬的博客美化一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
#PHP MySQL 读取mydemo表数据
header("content-type:text/html;charset=utf-8");
$servername = "localhost";
$username = "username";
$password = "pasword";
$dbname = "demo";

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}
//设置返回数据的字符集
mysqli_query($conn,"set names utf8");

$sql = "SELECT * FROM mydemo";
$result = mysqli_query($conn, $sql);



mysqli_close($conn);
?>
<!DOCYTPE html>
<html>
<head>
<meta charset = "utf-8">
<title></title>
<style type="text/css">
th,td{
padding:5px;color:#444;
font-size:14px;border:1px soild #ccc;
}
</style>
</head>
<body>
<table width="800" border="1" style="border-collapse:collapse;" align="center">
<tr>
<th>ID</th>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
</tr>
<?php
while($row=mysqli_fetch_row($result)){
?>
<tr>
<td align="center"><?php echo $row[0]?></td>
<td align="center"><?php echo $row[1]?></td>
<td align="center"><?php echo $row[2]?></td>
<td align="center"><?php echo $row[3]?></td>
</tr>
<?php } ?>
</table>
</body>
</html>

得到
在这里插入图片描述

修改数据

UPDATE 语句用于中修改数据库表中的数据
语法

1
2
3
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value

通过实例修改数据表中的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
#PHP MySQL 更新mydemo表数据
header("content-type:text/html;charset=utf-8");
$servername = "localhost";
$username = "username";
$password = "pasword";
$dbname = "demo";

// 创建连接
$con = mysqli_connect($servername, $username, $password, $dbname);
// 检测连接
if (mysqli_connect_errno())
{
echo "连接失败: " . mysqli_connect_error();
}

mysqli_query($con,"UPDATE mydemo SET Age=20
WHERE ID=1004");

mysqli_close($con);
?>

mydemo数据表中id=1004的记录age变为20
在这里插入图片描述

删除数据

DELETE FROM 语句用于从数据库表中删除记录。

语法

1
2
DELETE FROM table_name
WHERE some_column = some_value

删除一条记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
#PHP MySQL 更新mydemo表数据
header("content-type:text/html;charset=utf-8");
$servername = "localhost";
$username = "username";
$password = "pasword";
$dbname = "demo";

// 创建连接
$con = mysqli_connect($servername, $username, $password, $dbname);
// 检测连接
if (mysqli_connect_errno())
{
echo "连接失败: " . mysqli_connect_error();
}

mysqli_query($con,"DELETE FROM mydemo WHERE ID=1004");

mysqli_close($con);
?>

mydmo表中id=4的记录消失
在这里插入图片描述


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!