十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
CI框架下的PHP增删改查总结:
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、网站制作、天全网络推广、重庆小程序开发公司、天全网络营销、天全企业策划、天全品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供天全建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
controllers下的 cquery.php文件
[php] view plain copy
?php
class CQuery extends Controller {
//构造函数
function CQuery() {
parent::Controller();
// $this-load-database();
}
function index() {
//调用model 其中train为外层文件夹 MQuery为model名称 queryList为重命名
$this-load-model('train/MQuery','queryList');
//获得返回的结果集 这里确定调用model中的哪个方法
$result = $this-queryList-queryList();
//将结果集赋给res
$this-smarty-assign('res',$result);
//跳转到显示页面
$this-smarty-view('train/vquery.tpl');
}
//进入新增页面
function addPage() {
$this-smarty-view('train/addPage.tpl');
}
//新增
function add() {
//获得前台数据
//用户名
$memberName = $this-input-post('memberName');
//密码
$password = $this-input-post('password');
//真实姓名
$userRealName = $this-input-post('userRealName');
//性别
$sex = $this-input-post('sex');
//出生日期
$bornDay = $this-input-post('bornDay');
//e_mail
$eMail = $this-input-post('eMail');
//密码问题
$question = $this-input-post('question');
//密码答案
$answer = $this-input-post('answer');
//调用model
$this-load-model('train/MQuery','addRecord');
//向model中的addRecord传值
$result = $this-addRecord-addRecord($memberName,$password,$userRealName,$sex,$bornDay,$eMail,$question,$answer);
//判断返回的结果,如果返回true,则调用本页的index方法,不要写 $result == false 因为返回的值未必是false 也有可能是""
if ($result) {
$this-index();
} else {
echo "add failed.";
}
}
//删除
function deletePage() {
//获得ID
$deleteID = $this-uri-segment(4);
//调用model
$this-load-model('train/MQuery','delRecord');
//将值传入到model的delRecord方法中
$result = $this-delRecord-delRecord($deleteID);
//判断返回值
if ($result) {
$this-index();
} else {
echo "delect failed.";
}
}
//修改先查询
function changePage() {
$changeID = $this-uri-segment(4);
$this-load-model('train/MQuery','changeRecord');
$result = $this-changeRecord-changeRecord($changeID);
//将结果集赋给res
$this-smarty-assign('res',$result);
//跳转到显示页面
$this-smarty-view('train/changePage.tpl');
}
//修改
function change() {
//获得前台数据
//ID
$ID = $this-input-post('id');
//用户名
$memberName = $this-input-post('memberName');
//密码
$password = $this-input-post('password');
//真实姓名
$userRealName = $this-input-post('userRealName');
//性别
$sex = $this-input-post('sex');
//出生日期
$bornDay = $this-input-post('bornDay');
//e_mail
$eMail = $this-input-post('eMail');
//密码问题
$question = $this-input-post('question');
//密码答案
$answer = $this-input-post('answer');
//调用model
$this-load-model('train/MQuery','change');
//向model中的change传值
$result = $this-change-change($ID,$memberName,$password,$userRealName,$sex,$bornDay,$eMail,$question,$answer);
//判断返回的结果,如果返回true,则调用本页的index方法,不要写 $result == false 因为返回的值未必是false 也有可能是""
if ($result) {
$this-index();
} else {
echo "change failed.";
}
}
}
models中的 mquery.php 文件
[php] view plain copy
?php
class MQuery extends Model {
//构造函数
function MQuery() {
parent::Model();
//连接数据库
$this-load-database();
}
//查询列表
function queryList() {
//防止select出的数据存在乱码问题
//mysql_query("SET NAMES GBK");
//SQL语句
$sql = "SELECT ID,member_name,sex,e_mail FROM user_info_t";
//执行SQL
$rs = $this-db-query($sql);
//将查询结果放入到结果集中
$result = $rs-result();
//关闭数据库
$this-db-close();
//将结果集返回
return $result;
}
//新增
function addRecord($memberName,$password,$userRealName,$sex,$bornDay,$eMail,$question,$answer) {
//防止select出的数据存在乱码问题
//mysql_query("SET NAMES GBK");
//SQL语句
$sql = "INSERT INTO user_info_t (member_name,password,user_real_name,sex,born_day,e_mail,question,answer) " .
"VALUES ('$memberName','$password','$userRealName','$sex','$bornDay','$eMail','$question','$answer')";
//执行SQL
$result = $this-db-query($sql);
//关闭数据库
$this-db-close();
//返回值
return $result;
}
//删除
function delRecord($deleteID) {
//防止select出的数据存在乱码问题
//mysql_query("SET NAMES GBK");
$sql = "DELETE FROM user_info_t WHERE ID = $deleteID";
$result = $this-db-query($sql);
$this-db-close();
return $result;
}
//修改前查询
function changeRecord($changeID) {
//防止select出的数据存在乱码问题
//mysql_query("SET NAMES GBK");
$sql = "SELECT ID,member_name,password,user_real_name,sex,born_day,e_mail,question,answer FROM user_info_t WHERE ID = $changeID";
//执行SQL
$rs = $this-db-query($sql);
$result = $rs-row();//$result = $rs[0]
//关闭数据库
$this-db-close();
//将结果集返回
return $result;
}
//修改
function change($ID,$memberName,$password,$userRealName,$sex,$bornDay,$eMail,$question,$answer) {
//防止select出的数据存在乱码问题
//mysql_query("SET NAMES GBK");
//SQL语句
$sql = "update user_info_t set member_name = '$memberName',password = '$password', user_real_name = '$userRealName'," .
"sex = '$sex',born_day = '$bornDay',e_mail = '$eMail',question = '$question',answer = '$answer'" .
"where ID = $ID";
//执行SQL
$result = $this-db-query($sql);
//关闭数据库
$this-db-close();
//返回值
return $result;
}
}
views 下的 addPage.tpl文件
[php] view plain copy
html
head
/head
bodyform action="{{site_url url='train/cquery/add'}}" method="post"
table border='1'
tr
td用户名/td
tdinput type="text" class="text" name="memberName" id="memberName"//td
/tr
tr
td密码/td
tdinput type="text" class="text" name="password" id="password"//td
/tr
tr
td真实姓名/td
tdinput type="text" class="text" name="userRealName" id="userRealName"//td
/tr
tr
td性别/td
tdinput type="text" class="text" name="sex" id="sex"//td
/tr
tr
td出生日期/td
tdinput type="text" class="text" name="bornDay" id="bornDay"//td
/tr
tr
tde_mail/td
tdinput type="text" class="text" name="eMail" id="eMail"//td
/tr
tr
td密码问题/td
tdinput type="text" class="text" name="question" id="question"//td
/tr
tr
td密码答案/td
tdinput type="text" class="text" name="answer" id="answer"//td
/tr
/table
table
tr
tdinput type="submit" class="button" name="OK" value="提交" /
/td
/tr
/table/form
/body
/html
首先,你要知道,访问网站肯定存在先后,两个人同时访问网站,哪怕只有1ms的时间差也会被识别出先后的顺序。知道这个之后,对于避免数据库被多人修改就很简单了,有多种实现方法,一种是借鉴信号量的应用方法,在程序里来控制,谁抢到谁就拥有信号量,就可以操作数据库;另一种是使用数据库ACID特性以及lock功能(各种现代数据库都支持事务处理模式并拥有lock功能,具体查你用的数据库的文档教程),先访问的要在程序里对数据库加lock,防止其他人修改。
举例如下:
创建userinfo_update.php页面用于查询用户信息,先显示信息,在修改:
先通过GET获取用户编号查询用户信息:
$sql = "select * from user_info where user_id='".$_GET['userId']."'";
$result = mysql_query($sql,$con);
if($row = mysql_fetch_array($result)){
}
页面效果:
创建update.php文件,用于修改用户信息:
使用到了mysql_affected_rows() 函数返回前一次 MySQL 操作所影响的记录行数。
//通过post获取页面提交数据信息
$userId = $_POST[userId];
$userName = $_POST[userName];
$userAge = $_POST[userAge];
$sql = "update user_info set user_name='".$userName."',user_age=".$userAge." where user_id='".$userId."'";
mysql_query($sql,$conn);//执行SQL
$mark = mysql_affected_rows();//返回影响行数
$url = "userinf_select.php";
运行结果
创建delete.php文件,完成删除用户信息功能:
$userId = $_GET['userId'];
include 'connection.php';
$sql = "delete from user_info where user_id='".$userId."'";
mysql_query($sql,$con);
$mark = mysql_affected_rows();//返回影响行数
if($mark0){
echo "删除成功";
}else{
echo "删除失败";
}
mysql_close($con);
运行结果:
这个说起来长篇,你所问的$updateSQL = $db-GetUpdateSQL其实并不是属于php自己的东西,而是用户自定义的类,至于类是什么去看看基础的php语言基础.
所以你要知道GetUpdateSQL返回的究竟是什么东西,他是怎么工作的,就要找到类的本身代码所在文件,去看看他里面究竟是什么东西.
而php修改数据库里的东西其实是没有专用语句的.如果硬要问怎么实现的话,就是那个$db-Execute($updateSQL);
所以建议你把$updateSQL print(或echo)出屏幕看看里面是什么就明白了.
其实是个SQL的操作语句,指示SQL如何存储数据,而$db-Execute只让php把这个命令传给SQL