[PHP从小白到大牛]-022 PHP操做MySQL

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);
复制代码

操做数据库总结

简单查询

什么是简单查询?

查询条件很简单的查询, 就叫简单查询, 没有条件或者条件单一...php

查询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);
复制代码

做业连接

相关文章
相关标签/搜索