ThinkPHP写数组插入与收获最新插入数据ID实例

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

但系统自动识别 type
是有缺陷的,当传入的字段有主键字段时,系统就识别为更新操作,否则就是写入操作。所以当主键字段非自动增长而是需要
SQL 写入时,那么自动验证和自动填充都可能无效。

该实例讲述了thinkphp怎么自己写数组插入,此处是以注册用户为例。

{$Think.config.db_charset}

本文实例讲述了thinkphp写数组插入与获取最新插入数据ID的实现方法。分享给大家供大家参考。具体方法分析如下:

echo $user->count();
echo ‘<br>’;
echo $user->max(‘id’);
echo ‘<br>’;
echo $user->where(‘id<30’)->min(‘id’);
echo ‘<br>’;
echo $user->avg(‘id’);
echo ‘<br>’;
echo $user->sum(‘id’);

具体实现代码如下:
复制代码 代码如下:public function
insert2(){
 header(“Content-Type:text/html; charset=utf-8”);
 $Dao = M(“User”); // 构建写入的数据数组
 $data[“username”] = $_POST[“username”];
 $data[“password”] = md5($_POST[“password”];);
 $data[“email”] = $_POST[“email”];
 $data[“regdate”] = time(); // 写入数据
 if($lastInsId = $Dao->add($data)){  //$lastInsId为最新插入数据的id
 echo “插入数据 id 为:$lastInsId”;
 } else {
 $this->error(‘数据写入错误!’);
 }
 }

{$_SERVER.script_name} // 输出$_SERVER变量
 
{$_SESSION.session_id|md5} // 输出$_SESSION变量 

 代码如下

 代码如下

$data[‘username’]=array(‘like’,’peng%’);
$list=$user->where($data)->select();

(8)开发的过程中如不需要进行缓存,可以在入口文件中进行如下定义:

 代码如下

三,内置模板引擎的使用方法总结

(id<30) and ((username=pengyanjie) or (password like p%))

2 $user->where(‘id=2’)->setField(‘username’,’www.111cn.Net’);
(4)涉及到比较的情况下不一定非得使用if
condition这种形式的,还可以按如下的形式来写:

};

[1] 奇数行 5小于10 长度为1
[2] 偶数行 260大于5 260大于15 长度为3
[3] 奇数行 13大于5 长度为2
[4] 偶数行 7大于5 7小于10 长度为1
[5] 奇数行 40大于5 40大于15 长度为2
[6] 偶数行 50大于5 50大于15 长度为2
[7] 奇数行 2小于10 长度为1
[8] 偶数行 1小于10 长度为1

二、区间查询

{$_COOKIE.name}  // 输出$_COOKIE变量

a、在工程目录下的Lib目录下的Model目录下建立一个IndexModel.class.php,然后里面写一个方法play,此方法内容体为循环输出1至10。

$data[‘username’]=array(array(‘like’,’p%’),array(‘like’,’h%’),’or’);
$list=$user->where($data)->select();

 代码如下

语法格式:$data[‘字段名’]=array(‘是表达式’,’查询条件’);

// 自动填充

(2)以下演示的是上面控制器赋值到模板中的一些变量,常量以及数组的一些基础性用法

$user=M(‘user’);
$list=$user->where(‘id>5 and
id<9’)->select();
$list=$user->where($data)->select();

 代码如下

__PUBLIC__ // 网站公共目录

2 ‘SHOW_ADV_TIME’=>true,//显示详细的运行时间 

id:{$vo.id}

$user=new AdvModel(‘user’);//实例化高级模型AdvModel
//$user=M(‘user’,’CommonModel’);//或者将AdvModel用CommonModel来继承
$list=$user->order(‘id desc’)->getN(2);//返回结果中的第三条
$list=$user->order(‘id desc’)->last();//返回最后一条
$list=$user->order(‘id desc’)->first();//返回第一条

F操作,快速文件数据保存方法,使用方法与S操作一样。

5 ‘SHOW_USE_MEM’=>true,//显示内存开销
(10)自定义Model类并在实例化模型(模型就是数据库操作类)时使用,举例如下:

{$Think.now} //现在时间  

Foreach 输出

protected $_auto = array(

{$Think.CONFIG.user.user_name}

尽管在操作中,执行了 add()
操作将数据写入了数据表,但这时会发现自动验证与自动填充无效。

<foreach name=”vo”
key=”key” item=”item”>
{$key}:{$item}
</foreach>

 代码如下

SESSION 、COOKIE还支持二维数组的输出

(3)数据表字段做了更改

获取:C(‘配置参数’)

输出结果类似为:

 $user=M(‘user’); 

{$vo.name|strtolower|ucwords}

{$Think.MODULE_NAME}
 
(3)特殊变量 :由ThinkPHP系统内部定义的常量

(2)数据字段未对应

create(mixed data, string type)

获取:S(‘name’)

数组输出

 $user=M(‘user’); 

删除:S(‘name’,NULL);

{$Think.get.pageNumber} // 输出$_GET变量 

设置:S(‘name’,’value’);

 $User->delete(‘2,5’);//删除主键为2和5的数据
(6)关于thinkphp的几个快速操作的函数的用法说明。

2 $fields=$user->getDbFields();
结果将返回一个由表字段组成的一个一维数组。

{$Think.lang.page_error}

C操作,操作(动态)配置: 主要用于Action方法里面

(2)在thinkphp中如果需要获取数据库中某个表的字段该怎么办呢?示例如下:

(1)不要在模板中直接使用{$_GET.id}或者{$Think.get.id},因为{$_GET.id}
{$Think.get.id}
这两种方式都没有任何过滤,容易被XSS。建议使用I方法,即:{:I(‘get.id’)}

array(‘pubtime’,’time’,1,’function’),

八、动态查询

{$Think.session.user.user_name}

);

 $index=M(‘index’,’IndexModel’);//这里可以加上自定义的模型类一起实例化 

$data[‘username’]=’www.111cn.Net’;

(7)Model命名时,默认要和数据库里的表名一致,如PhpernoteUserModel.class.php对应数据库的名称应该是
‘前缀_phpernote_user’,在程序代码中的调用应该是:D(‘PhpernoteUser’);

系统不支持三维以上的数组输出。
 
 
(2)语言变量:输出项目的当前语言定义值

2、数组形式

ThinkPHP内置的模板引擎比较标签

(5)数据表无自增的id

(5)thinkphp
的系统常量(注意以下常量也可以直接在 action 控制器中直接使用)

name:{$vo[‘name’]}

(3)数据修改的过程中如果我们只需要修改某个字段的值,就可以使用setField方法,而不需要每次都调用save方法,例如:

name:{$obj:name}

 代码如下

{$Think.version}  //版本

__APP__ // 当前项目(入口文件)地址

 代码如下

$user=M(‘user’);
$data[‘username’]=array(‘eq’,’pengyanjie’);
$data[‘password’]=array(‘like’,’p%’);
$data[‘_logic’]=’or’;
$where[‘_complex’]=$where;
$where[‘id’]=array(‘lt’,30);
$list=$user->where($data)->select();

Model
命名错误,未严格按照规范命名,如头字母未大写或粗心导致字母顺序不对,多或少字母等。这等错误往往会直接导致模型失效,大小写这边特别需要注意。

// 新增时填充时间戳

$user=M(‘user’);
$data[‘id’]=array(array(‘gt’,20),array(‘lt’,23),’and’);
$list=$user->where($data)->select();

<if condition=” $num gt 5″>
{$num}大于5
<elseif condition=”$num gt 3″ />
{$num}大于3<else />
其他{$num}
</if>

{$Think.const.MODULE_NAME}

{$Think.session.name}

num1:{$num1}

b、那么在Action中的方法里,还可以这么写:

__ROOT__ // 网站根目录地址

二,查询技巧

在开发过程中,更改了表字段名称,而缓存未及时更新,导致系统判断为无效字段而被
unset 掉。所以在更改了表字段名称之后,及时将 Runtime/Data
下的数据表缓存清除。

id:{$vo[‘id’]}

 代码如下

array(‘title’,”,’标题已经存在!’,0,’unique’,1),

 代码如下

 代码如下

对变量使用函数(这里可以是内置函数或者自定义函数)

 代码如下

{$Think.server.script_name}和{$Think.SERVER.script_name}等效

A操作,快速创建Action对象:

大于3
小于3
条件判断

发表评论

电子邮件地址不会被公开。 必填项已用*标注