博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库封装函数
阅读量:5887 次
发布时间:2019-06-19

本文共 2004 字,大约阅读时间需要 6 分钟。

//数据库函数的封装与应用

<?php

//编写数据库操作的魔术函数

function mysql_bind(){

//首先我们不知道外面会传入多少个参数

//可以用func_get_args()方法来获取全部传入参数,这个方法返回全部参数的数组
//和func_get_args()方法相对应的其实还有一个func_num_args()来获取参数个数
$args = func_get_args();

//通过使用array_shift方法,使传入的第一个参数,后后面的参数分开,其实就是把sql语句,和

//后面传入的值分开,使用了array_shift方法,可以返回一个字符串,这个字符串就是sql语句
//后面剩下的数组就是要传入的值

//sql语句

$sql = array_shift($args);
//重新复制给一个数组
$value = $args;

//替换$sql语句中的?,使用str_replace函数

$sql = str_replace("?","'%s'",$sql);

//把替换好的$sql语句,通过vsprintf函数,把值填入进去

$sql = vsprintf($sql,$value);

//截取$sql语句前面的关键字,其实就是select,insert,update,delete

$begin = substr($sql,0,6); //explode(" ",$sql)[0]; //这种写法在PHP5.4之前是不支持的

$conn = mysql_connect("localhost","root","") or die(mysql_error());

mysql_select_db("bbs",$conn);
mysql_query("set names 'utf8'");

$result = mysql_query($sql) or die(mysql_error());

if(strcasecmp($begin,"insert") == 0){

//如果插入成功,那么肯定有一个最新的id,所以这个id不等于0的话,证明插入成功,否则失败
return mysql_insert_id();
}
else if(strcasecmp($begin,"update") == 0){
//mysql_affected_rows()表示几行受影响,成功,肯定是大于0,否则失败
return mysql_affected_rows();
}
else if(strcasecmp($begin,"delete") == 0){
//mysql_affected_rows()表示几行受影响,成功,肯定是大于0,否则失败
return mysql_affected_rows();
}
else{
//为了将查询的内容返回回去
//首先申明一个空的数组,然后,这个空的数组,每次循环,都将$row赋值给他
//相当于这个数组就形成了一个二维数组
$arr = array();
while($row=mysql_fetch_array($result)){
$arr[] = $row;
// array_push($arr,$row);
}
return $arr;
}

}

?>

 

//应用

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>

<?php

//function2.php就是上面封装的函数

include("function2.php");
$r = mysql_bind("select * from users where userName=? and password=?","pangpang","qqq");

//$r = mysql_bind("insert into users(id,userName,password,nickName,userImg,status)values(?,?,?,?,?,?)","","3","3","3","3","2");

//$r = mysql_bind("delete from users where userName=?","1");
//$r = mysql_bind("update users set nickName=? where id=?","罗大胖","1");

foreach($r as $row){

echo "用户:".$row['nickName']."<br/>";
echo "密码:".$row['password']."<br/>";
}

?>

转载于:https://www.cnblogs.com/yanjialin/p/3731052.html

你可能感兴趣的文章
也谈跨域数据交互解决方案
查看>>
EntityFramework中使用Include可能带来的问题
查看>>
面试题28:字符串的排列
查看>>
css important
查看>>
WPF 实现窗体拖动
查看>>
NULL不是数值
查看>>
css绘制几何图形
查看>>
结合kmp算法的匹配动画浅析其基本思想
查看>>
Android网络编程11之源码解析Retrofit
查看>>
安全预警:全球13.5亿的ARRIS有线调制解调器可被远程攻击
查看>>
麦子学院与阿里云战略合作 在线教育领军者技术实力被认可
查看>>
正确看待大数据
查看>>
Facebook通过10亿单词构建有效的神经网络语言模型
查看>>
发展大数据不能抛弃“小数据”
查看>>
中了WannaCry病毒的电脑几乎都是Win 7
查看>>
学生机房虚拟化(九)系统操作设计思路
查看>>
nginx报错pread() returned only 0 bytes instead of 4091的分析
查看>>
质数因子
查看>>
Spring源码浅析之事务(四)
查看>>
[转载] Live Writer 配置写 CSDN、BlogBus、cnBlogs、163、sina 博客
查看>>