# 启动MySQL
在XAMPP软件中启动MySQL时遇到了以下问题:
这是因为我的电脑之前已经有装过MySQL了,仔细查看图中的报错信息可以发现,其实就是MySQL的读取路径不对
此时我们需要去注册表编辑器中把MySQL的路径改一下,按Win + R打开命令搜索框,输入regedit
打开注册表编辑器,输入路径:
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL
1
可以看到原本的ImagePath
的路径是:
"D:\Program Files\MySQL\bin\mysqld" MySQL
1
双击ImagePath
,把里面的路径改成:
c:\xampp\mysql\bin\mysqld.exe --defaults-file=c:\xampp\mysql\bin\my.ini mysql
1
此时重新启动MySQL就可以成功启动了。
# 数据库增删改查
- 上文我们把数据库启动成功之后,在浏览器中访问
localhost
,然后在XAMPP的欢迎页右上角点击phpMyAdmin
。
- 进入
phpMyAdmin
的管理界面,可以看到左侧菜单默认有5个数据库,除了 test 这个库可以动之外,其他4个库是系统库,不能改动。
- 接下来我们就可以新建数据库,填写好表名,以及编码规则。编码规则一定要选择
utf8_general_ci
,防止乱码,然后点击创建。char 是定长的字段,而 varchar 是可变长的字段,它后面带的数字表示的是这个字段最多能容纳多少个字节。char 的好处是检索速度快,但是会造成空间浪费;varchar 的好处是能够节省空间,用多少给多少,但是检索速度相对较慢。
- 创建好数据库之后,就可以创建表了,填写表名字以及所需要的字段数。
- 填写相应的字段信息。
- 接下来就可以通过菜单栏或者SQL语句来对数据库表进行增删改查的操作了。关于SQL语句的具体用法可以参照W3C文档:SQL (opens new window)。
🔔 补充下:数据库除了使用 phpMyAdmin 之外,我们还可以使用 MySQL 的 MySQL Workbench (opens new window)。
# PHP与MySQL
上面我们其实是在直接操作数据库,但是实际开发过程中,应该是前端连接PHP,然后PHP连接数据库,通过PHP来对数据库进行操作的。前端连接PHP有两种方式,一种是通过Form
表单,另外一种是通过Ajax
请求。下面就来介绍下PHP如何连接数据库。
需要注意的是,不同版本的PHP操作MySQL的函数有所不同,PHP版本在5以下,参照PHP MySQL函数 (opens new window);PHP版本在5以上,参照PHP5 MySQLi函数 (opens new window)。以下演示的PHP版本都是在5以上。
- 连接MySQL
在PHP中,连接MySQL是通过
mysqli_connect()
函数来完成的。
<?php
$con = mysqli_connect("localhost","root","");
if (!$con){
die('Could not connect:'.mysqli_connect_error());
} else {
echo 'mysql connect ok';
}
mysqli_close($con);
?>
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- 插入数据
<?php
$con = mysqli_connect("localhost","root","");
if (!$con){
die('Could not connect:'.mysqli_connect_error());
} else {
mysqli_select_db($con, "phpdemo");
$sql = "INSERT INTO `news`(`newsTitle`, `newsImg`, `newsContent`, `addTime`) VALUES ('新闻标题','新闻图片','新闻内容','2020-05-23')";
mysqli_query($con, "set names 'utf-8'"); // 防止乱码
$result= mysqli_query($con, $sql);
if (!$result) {
die('Error:'.mysqli_error($con));
} else {
echo '数据插入成功';
}
}
mysqli_close($con);
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- 删除数据
<?php
$con = mysqli_connect("localhost","root","");
if (!$con){
die('Could not connect:'.mysqli_connect_error());
} else {
mysqli_select_db($con, "phpdemo");
$sql = "DELETE FROM `news` WHERE `newsId`=8";
mysqli_query($con, "set names 'utf-8'"); // 防止乱码
$result= mysqli_query($con, $sql);
if (!$result) {
die('Error:'.mysqli_error($con));
} else {
echo '数据删除成功';
}
}
mysqli_close($con);
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- 更新数据
<?php
$con = mysqli_connect("localhost","root","");
if (!$con){
die('Could not connect:'.mysqli_connect_error());
} else {
mysqli_select_db($con, "phpdemo");
$sql = "UPDATE `news` SET `newsTitle`='第九条新闻的标题',`newsImg`='第九条新闻的图片' WHERE `newsId`=9";
mysqli_query($con, "set names 'utf-8'"); // 防止乱码
$result= mysqli_query($con, $sql);
if (!$result) {
die('Error:'.mysqli_error($con));
} else {
echo '数据更新成功';
}
}
mysqli_close($con);
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- 前端界面向后台提交数据
<form action="mysql.php">
<div>
<label for="newsTitle">新闻标题:</label>
<input type="text" name="newsTitle" id="newsTitle">
</div>
<div>
<label for="newsImg">新闻图片:</label>
<input type="text" name="newsImg" id="newsImg">
</div>
<div>
<label for="newsContent">新闻内容:</label>
<textarea name="newsContent" id="newsContent" cols="30" rows="10"></textarea>
</div>
<div>
<label for="addTime">新闻时间:</label>
<input type="date" id="addTime" name="addTime" value="2020-05-23">
</div>
<div>
<input type="submit" value="提交">
<input type="reset" value="重置">
</div>
</form>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$con = mysqli_connect("localhost","root","");
if (!$con){
die('Could not connect:'.mysqli_connect_error());
} else {
mysqli_select_db($con, "phpdemo");
$newsTitle = $_REQUEST['newsTitle'];
$newsImg = $_REQUEST['newsImg'];
$newsContent = $_REQUEST['newsContent'];
$addTime = $_REQUEST['addTime'];
$sql = "INSERT INTO `news`(`newsTitle`, `newsImg`, `newsContent`, `addTime`) VALUES ('".$newsTitle."', '".$newsImg."', '".$newsContent."', '".$addTime."')";
mysqli_query($con, "set names 'utf-8'"); // 防止乱码
$result= mysqli_query($con, $sql);
if (!$result) {
die('Error:'.mysqli_error($con));
} else {
echo '数据插入成功';
}
}
mysqli_close($con);
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
界面操作输入数据,点击提交
查看数据库发现数据插入成功了
- 前端展示数据库信息
<?php
$con = mysqli_connect("localhost","root","");
if (!$con){
die('Could not connect:'.mysqli_connect_error());
} else {
mysqli_select_db($con, "phpdemo");
mysqli_query($con, "set names 'utf-8'"); // 防止乱码
$sql = "SELECT * FROM `news` WHERE 1";
$result= mysqli_query($con, $sql);
if (!$result) {
die('Error:'.mysqli_error($con));
} else {
// echo '查询数据成功';
}
}
$arr = array();
while ($row = mysqli_fetch_array($result)) {
array_push($arr, array(
"newsTitle" => $row['newsTitle'],
"newsImg" => $row['newsImg'],
"newsContent" => $row['newsContent'],
"addTime" => $row['addTime']
));
}
$res = array('errorCode' => 0, 'result' => $arr);
echo json_encode($res, JSON_UNESCAPED_UNICODE);
mysqli_close($con);
?>
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
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
展示结果如下,可以发现这其实就是我们平时从接口里获取到的数据结构