PHP操作MySQL的几种方法

操作数据库的八个步骤

添加更新删除数据
插入数据, 返回插入的条数
<?php
$link = mysqli_connect('127.0.0.1', 'root', 'root');
if (!is_null(mysqli_connect_error())) {
die(mysqli_connect_error());
}
mysqli_select_db($link, 'school');
mysqli_set_charset($link, 'utf8');
$sql = "insert into user values(1, '张三','男',21),(2,'李思','女',22)";
$result = mysqli_query($link, $sql);
if ($result) {
echo "执行成功! 成功插入了 " . mysqli_affected_rows($link) . " 条数据!";
} else {
echo "执行失败!";
}
mysqli_close($link);
插入一条数据, 获取返回的id
<?php
$link = mysqli_connect('127.0.0.1', 'root', 'root');
if (!is_null(mysqli_connect_error())) {
die(mysqli_connect_error());
}
mysqli_select_db($link, 'school');
mysqli_set_charset($link, 'utf8');
$sql = "insert into user values(3, '张三','男',33)";
$result = mysqli_query($link, $sql);
if ($result) {
echo "执行成功! 成功插入了 " . mysqli_affected_rows($link) . " 条数据!<br> 插入的id为".mysqli_insert_id($link);
} else {
echo "执行失败!";
}
mysqli_close($link);
修改数据库
<?php
$link = mysqli_connect('127.0.0.1', 'root', 'root');
if (!is_null(mysqli_connect_error())) {
die(mysqli_connect_error());
}
mysqli_select_db($link, 'school');
mysqli_set_charset($link, 'utf8');
$sql = "update user set password = 'password' where id > 4";
$result = mysqli_query($link, $sql);
if ($result) {
echo "执行成功! 成功更新了 " . mysqli_affected_rows($link) . " 条数据!";
} else {
echo "执行失败!";
}
mysqli_close($link);
删除数据库
<?php
$link = mysqli_connect('127.0.0.1', 'root', 'root');
if (!is_null(mysqli_connect_error())) {
die(mysqli_connect_error());
}
mysqli_select_db($link, 'school');
mysqli_set_charset($link, 'utf8');
$sql = "delete from user where id > 4";
$result = mysqli_query($link, $sql);
if ($result) {
echo "执行成功! 成功删除了 " . mysqli_affected_rows($link) . " 条数据!";
} else {
echo "执行失败!";
}
mysqli_close($link);
操作数据库总结

简单查询
什么是简单查询?
查询条件很简单的查询, 就叫简单查询, 没有条件或者条件单一...
查询user表的所有数据
<?php
$link = mysqli_connect('127.0.0.1', 'root', 'root');
if (!is_null(mysqli_connect_error())) {
die(mysqli_connect_error());
}
mysqli_select_db($link, 'school');
mysqli_set_charset($link, 'utf8');
$sql = "select * from user";
$result = mysqli_query($link, $sql);
if ($result) {
$data = mysqli_fetch_array($result);
var_dump($data);
} else {
echo "执行失败!";
}
mysqli_close($link);
mysqli_fetch_array()
- 返回一个包含数据的数组, 包括两种格式, 关联数组和索引数组
- 一次只能解析一条数据

mysqli_fetch_array()执行一次, 向后移一位

- 再执行, 再后移

- 直到移到最后, 没有数据

- 需要使用循环, 才能获得所有数据
while($row = mysqli_fetch_array($result)){
var_dump($row);
}
完整代码
<?php
$link = mysqli_connect('127.0.0.1', 'root', 'root');
if (!is_null(mysqli_connect_error())) {
die(mysqli_connect_error());
}
mysqli_select_db($link, 'school');
mysqli_set_charset($link, 'utf8');
$sql = "select * from user";
$result = mysqli_query($link, $sql);
if ($result) {
while($row = mysqli_fetch_array($result)){
var_dump($row);
}
} else {
echo "执行失败!";
}
mysqli_close($link);
第二个参数

mysqli_fetch_row()
- 相当于
mysqli_fetch_array($link,MYSQLI_NUM)
mysqli_fetch_all()
- 一次性解析所有数据
<?php
$link = mysqli_connect('127.0.0.1', 'root', 'root');
if (!is_null(mysqli_connect_error())) {
die(mysqli_connect_error());
}
mysqli_select_db($link, 'school');
mysqli_set_charset($link, 'utf8');
$sql = "select * from user";
$result = mysqli_query($link, $sql);
if ($result) {
$data = mysqli_fetch_all($result);
var_dump($data);
} else {
echo "执行失败!";
}
mysqli_close($link);
- 可以通过传入第二个参数
MYSQLI_ASSOC, 来返回关联数组
mysqli_num_rows() 获取查询到的行数
mysqli_num_fields() 获取查询到的列数
复杂查询
- 除了简单查询以外的查询
以表格的方式, 打印图书表的信息
- sql语句
create table booktype(
typeid int not null primary key,
typename varchar(20) null
);
create table book(
bookid char(10) not null PRIMARY key,
bookname VARCHAR(20) not null,
typeid INT,
bookauthor VARCHAR(20),
bookpublisher VARCHAR(50),
bookprice DOUBLE,
borrowsum int,
FOREIGN key(typeid) REFERENCES booktype(typeid)
);
insert into booktype values
(1,'自然科学'),
(2,'数学'),
(3,'计算机'),
(4,'建筑水利'),
(5,'旅游地理'),
(6,'励志/自我实现'),
(7,'工业技术'),
(8,'基础医学'),
(9,'室内设计'),
(10,'人文景观');
insert into book values
('TP39/1712','Java程序设计',3,'陈永红','机械工业出版社',35.5,30),
('013452','离散数学',2,'张小新','机械工业出版社',45.5,10),
('TP/3452','JSP程序设计案例',3,'刘城清','电子工业出版社',42.8,8),
('TH/2345','机械设计手册',7,'黄明凡','人民邮电出版社',40,10),
('R/345677','中医的故事',8,'李奇德','国防工业出版社',20.0,5);
以表格的方式, 打印图书表的信息, 包括图书类别名称
错误排查

mysqli_error() 获取sql语句执行的错误信息
- 注意, 错误信息不要输出给用户, 需要处理后再输出
- 根据不同的错误码, 输出自定义错误信息
mysqli_errno()获取错误码
<?php
$error_arr = [
1054=>'非常抱歉, 可能您的输入有误, 请检查'
];
$link = mysqli_connect('127.0.0.1','root','root');
if (!is_null(mysqli_connect_error())) {
die(mysqli_connect_error());
}
mysqli_select_db($link,'library');
$sql = "select sids from student";
$result = mysqli_query($link,$sql);
if($result){
echo "成功";
}else{
echo $error_arr[mysqli_errno($link)];
}
mysqli_close($link);