封装好的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 /> 数组下标为{$i}的语句:{$arr_sqls[$i]}执行错误<br /> 错误原因:".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
有了他,就能让写前端页面的室友与写后端数据操作的我,分工合作了!似乎这就是所谓的前后端分离了,看看明天试用的效果如何吧~