弱鸡养成第七天(2020.10.24)-完善了sql函数的封装、继续深入理解项目、学习ajax尝试实现前后端分离

本文介绍了PHP中封装的SQL操作函数,包括数据库连接、执行SQL、转义字符串等,强调了防止SQL注入的重要性。同时,解决了文件及项目编码问题,确保UTF-8编码的一致性。最后提到了使用AJAX实现前后端分离,以促进团队协作。
摘要由CSDN通过智能技术生成

封装好的sql操作函数

其实也就补充了一个Mysql_inc_escape函数:对作为sql语句的字符串或字符串数组进行转义,譬如将字符’或’‘的前面添加’/’。如此转义才能正确执行sql语句。

<?php 


//@ 连接数据库
//@ 参数均为同目录下config_inc.php文件定义好的常量
//@ 返回link对象
function Mysql_inc_connect($host=DB_HOST,$user=DB_USER,$password=DB_PASSWORD,$database=DB_DATABASE,$port=DB_PORT){
	$link=@mysqli_connect($host, $user, $password, $database, $port);
	if(mysqli_connect_errno()  ){
		echo '连接mysql失败!';
		exit(mysqli_connect_error()  );
	}
	mysqli_set_charset($link,'utf8');
	echo '连接mysql成功!';
	return $link;
}

//@ 执行一条sql语句
//@ p1:link对象,对象
//@ p2:sql语句,字符串
//@ 返回结果集result,执行失败则返回空
function Mysql_inc_execute($link,$query){
	$result=mysqli_query($link,$query);
	if(mysqli_errno($link)  ){
		echo '执行语句失败!';
		exit(mysqli_error($link)  );
	}
	echo '执行语句成功!';
	return $result;
}

//@ 执行一条sql语句
//@ p1:link对象,对象
//@ p2:sql语句,字符串
//@ 返回bool值,执行成功返回true,否则返回false
function Mysql_inc_execute_bool($link,$query){
	$bool=mysqli_real_query($link,$query);
	if(mysqli_errno($link)  ){
		echo 'cao';
		echo '执行语句失败!';
		exit(mysqli_error($link)  );
	}
	echo '执行语句成功!';
	return $bool;
}

//@ 一次性执行多条SQL语句
//@ p1:link对象,对象
//@ p2:多条语句,字符串数组
//@ p3:用于引用返回的错误信息,引用型字符串
//@ 执行成功返回结果集数组,否则返回bool值false
function Mysql_inc_execute_multi($link,$arr_sqls,&$error){
	$sqls=implode(';',$arr_sqls).';';
	
	var_dump($sqls);
	
	if(mysqli_multi_query($link,$sqls)){
		$data=array();
		$i=0;//计数
		do {
			if($result=mysqli_store_result($link)){
				$data[$i]=mysqli_fetch_all($result);
				mysqli_free_result($result);
			}else{
				$data[$i]=null;
			}
			$i++;
			if(!mysqli_more_results($link)) break;
		}while (mysqli_next_result($link));
		if($i==count($arr_sqls)){
			echo '执行语句成功';
			return $data;
		}else{
			$error="sql语句执行失败:<br />&nbsp;数组下标为{$i}的语句:{$arr_sqls[$i]}执行错误<br />&nbsp;错误原因:".mysqli_error($link);
			return false;
		}
	}else{
		$error='执行失败!请检查首条语句是否正确!<br />可能的错误原因:'.mysqli_error($link);
		return false;
	}
	
}

//@ 获取指定表的记录数
//@ p1:link对象,对象
//@ p2:表名,string
//@ 返回-1代表查询失败,否则返回表的记录数(字符串型)
function Mysql_inc_get_line_num($link,$list_name){
	$query='select count(*) from ';
	$query.=$list_name;//设置好查询语句
	$result=Mysql_inc_execute($link,$query);//执行查询语句
	$count=mysqli_fetch_row($result);//获取结果集
	return $count[0];//count数组的仅有的值就是表的行数
}


//@ 将即将进入数据库的字符串或者字符串数组转义,确保其能正确执行。
//@ p1:link对象,对象
//@ p2:待转义的数据,字符串或者字符串数组
//@ 返回转义后的字符串或者字符串数组
function Mysql_inc_escape($link,$data){
	//如果是数组,则递归下去。递归到字符串就停止递归,返回转义后的字符串。
	if(is_string($data) ){
		return mysqli_real_escape_string($link, $data);
	}
	if(is_array($data)){
		foreach ($data as $key=>$val){
			$data[$key]=Mysql_inc_escape($link, $val);
		}
	}	
	return $data;
}

//@ 关闭与数据库的连接
//@ p1:link对象,对象
//@ 无返回值
function Mysql_inc_close_connect($link){
	mysqli_close($link);
}
?>

乱码问题的终极终极蛇皮解决方案

点击项目栏下的属性
在这里插入图片描述
修改此为utf-8
在这里插入图片描述原先以为修改文件栏下的属性,就能解决编码问题,但那样只能修改一个文件。修改整个项目的文件编码才是最终方案。

新技能,利用ajax实现前后端分离

查了好久,终于找到了好用的东西,ajax!
https://www.bilibili.com/video/BV1kE411Q7z9?p=9
有了他,就能让写前端页面的室友与写后端数据操作的我,分工合作了!似乎这就是所谓的前后端分离了,看看明天试用的效果如何吧~

好好学习,天天向上!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值