php mysqli操作数据库

mysql 同时被 2 个专栏收录
8 篇文章 0 订阅
59 篇文章 0 订阅

1.mysql的准备操作

连接数据库
	$mydb = mysqli_connect('localhost',用户名,密码,数据库名,3306(端口号));
	连接成功返回1,失败返回0
连接判断
	mysqli_connect_errno();				如果返回0则表示连接成功
	exit(mysqli_connect_error());		返回一个字符串描述的错误代码信息,并退出
设置编码格式
	mysqli_set_charset($mydb, 'utf8');
在mysqli操作中将字符串里的特殊字符进行转义	
	mysqli_real_escape_string($mydb,$str);
切换数据库操作
	mysqli_select_db($mydb,'要切换的数据库名');
关闭数据库连接
	mysqli_close($mydb);

2.加密

md5($str);
sha1($str);

3.一些常见sql语句

插入数据
	$sql="insert into 表(id,name) values (1,'小明'),(2,'小华')....";
更新数据
	$sql="update 表 set name='小花' where id=1";			//更改1个数据
	$sql="update 表 set id=2,name='小花' where id=1";	//更改2个
删除数据
	$sql="delete from 表 where id=1;
查询数据
	$sql="select * from 表 where id=1";
查询数量
	$sql="select count(*)  from 表 where id=1";
			• max() 	表示查询某个字段的最大值
			• min()		表示查询某个字段的最小值
			• avg()		表示查询某个字段的平均值
			• sum()		表示求出某个字段的总和
模糊查询
	$sql="select * from 表 where name like '%明%' and id>1";
多参数的查询
	$sql="select count(*) from tb_content where id in (1,2,3,4)";
关联表查询
	(1)$sql="select tb1.id,tb1.name,tb2.id,tb2.name 
						  from tb_table1 tb1,tb_table2 tb2 
						  where tb1.id=tb2.id";
	(2)$sql="select tb1.id,tb1.name,tb2.id,tb2.name from tb_table1 tb1
						 INNER JOIN tb_table2 tb2  
						 ON tb1.id=tb2.id where tb1.id>1";
			//3张表以上
			$sql="select tb1.id,tb1.name,tb2.id,tb2.name from tb_table1 tb1
						 INNER JOIN tb_table2 tb2  ON tb1.id=tb2.id
						 INNER JOIN tb_table3 tb3  ON tb1.id=tb3.id";
	注:tb1和tb2是给表起的别名
			... INNER JOIN ... ON .. 	//.查询的结果是 2 张表或多张表中“同时满足”条件的数据
			... LEFT  JOIN ... ON ...//查询的结果是 2 张表“同时满足”条件的数据与左侧表中不符合条件的数据的结合
			... RIGHT  JOIN ... ON ...//查询的结果是 2 张表“同时满足”条件的数据与右侧表中不符合条件的数据的结合
			... FULL JOIN ... ON ...//查询的结果是 2 张表“同时满足”条件的数据与左侧表和右侧表中不符合条件的数据的结合
排序
	$sql="select * from 表 order by id asc";//asc:升序排列,desc:降序排列
查询特定几条数据,分页相关
	//sql语句中 ,limit 0,3	表示从第0条数据开始取3条数据
	$sql="selet * from table limit 0,3";
向mysql数据库插入时间datetime类型
	$sql="insert into table values('2017-03-02 15:22:22')";
	//末尾秒,分,时,可以依次省略,但日,月,年不可以省略
	获取当前时间
	(1)date_default_timezone_set("PRC");	//先设置时区,或者填Asia/chongqing
		$time=date("Y-m-d H-i-s", time());
	(2)	$sql="insert into table values('id',now())";
		注意:now()也可以获取当前的具体时间,但是只能在sql语句中使用
	(3)	$sql="insert into table values('id',CURDATE())";
		注:CURDATA()获取的是当前"年-月-日"时间,也是只能在sql语句中使用

4.执行mysql语句

$mydb= mysqli_connect('localhost','root','root','mysql',3306);
mysqli_query($mydb,sql语句);
执行判断
mysqli_errno($mydb);			如果返回0则表示执行成功
exit(mysqli_error());		返回一个字符串描述的错误代码信息,并退出

5.获取查询结果

$mydb= mysqli_connect('localhost','root','root','mysql',3306);
$sql="select * from table";
$result = mysqli_query($mydb,$sql);
循环输出全部数据
	while($data=mysqli_fetch_row($result)){
		var_dump($data);
	}
(1)mysqli_fetch_row($result);					返回索引数组,返回一条数据
(2)mysqli_fetch_assoc($result);				返回key-value关联数组,返回一条数据
(3)mysqli_fetch_array($result);				返回索引和关联数组,返回一条数据
(4)mysqli_fetch_all($result);					默认返回索引数组,返回全部数据
    mysqli_fetch_all($result, MYSQLI_ASSOC);	返回key-value关联数组	
(5)mysqli_num_rows(执行结果);					返回数据条数

6.释放与结果相关的内存

mysqli_free_result($result);
注:返回的结果集在数据量很大的时候需要很多的内存支持,所以在操作完结果集的时候有必要立即释放与一个结果集相关的内存

7.判断执行是否成功

mysqli_real_query($mydb, sql语句);		返回的是一个布尔值,成功为true
注:mysqli_query($mydb,$sql)返回的是一个结果集

8.转义字符串

$str=<<<STRING
	adasdasda''""""'''as;;'''dasdasd	
	STRING;
$str=mysqli_real_escape_string($mydb, $str);		将所有的特殊字符进行转义
$sql = "insert into table(name) values('{$str}')";
mysqli_query($mydb,$sql);	执行

9.一次性执行多条sql语句

$sql="insert into table(name) values("小明");insert into table(name) values("小花")";
mysqli_multi_query($mydb,$sql);		只有第一条语句不出错,就返回true

10.预处理语句机制

(1)//准备sql语句里面使用占位符?
	$sql="insert into table(id,name) values(?,?)";
	//准备要执行的sql语句
	$stmt = mysqli_prepare($mydb, $sql);
	//为?绑定占位符
	mysqli_stmt_bind_param($stmt, 'is', $val1, $val2);
		i	int,整数类型
		s	str,字符串数据类型
		d	double或float
		b	二进制数据类型
	//执行准备好的sql语句
	$val1 = 1;
	$val2 = "小明";
	mysqli_stmt_execute($stmt);
	//第二次执行准备好的sql语句
	$val1 = 2;
	$val2 = "小王";
	mysqli_stmt_execute($stmt);
	。。。

(2)如果是select之类的需要具体结果的语句
	$sql="select * from table where id<?";
	$stmt=mysqli_prepare($stmt,'i',$val1);

	$val1 = 4;
	if(mysqli_stmt_execute($stmt)){
		mysqli_stmt_bind_result($stmt,$id,$result);
		while(mysqli_stmt_fetch($stmt)){
			echo "{$id}->{$result} <br/>";
		}
	}

11.其他

判断操作是否成功
	mysqli_affected_rows($mydb)==1		判断是否影响了1行

如果您觉得本篇内容不错,可以点个关注,给个赞

  • 9
    点赞
  • 0
    评论
  • 18
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值