
正文
thinkphpwhere语法,thinkphp select
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
thinkphp中save函数的意思和用法?
thinkphp为了保证数据库的安全,避免出错更新整个数据表,如果没有任何更新条件,数据对象本身也不包含主键字段的话,save方法不会更新任何数据库的记录。所以我猜测你的form表单中没有传递id(不包含主键)的值,或者没有任何更新条件,最终导致你save()方法没有效果。
注意:save方法的返回值是影响的记录数,如果返回false则表示更新出错,因此一定要用恒等来判断是否更新失败。
这是一个自定义的函数,名为save,没有返回值。一般这样的函数是把定义为全局变量的变量值保存到磁盘上或是直接输出(照函数名save的意思是直接存盘)。所以就没有形式参数表,也没有函数返回值。
使用以下语句输出执行的SQL语句,然后直接把这个语句拿到数据库执行看看,报什么错。
这是我项目中的一个thinkphp方法,如果不覆盖原图那修改save中的文件名为新名称就可以。
相关问答
Q1: thinkphp更新数据怎么添加条件?
1、在插入之前进行一次查询是否存在的判断就行了么。就像是注册新用户一样~不清楚。到上发帖。我来给你
2、thinkphp里面其实跟原生语句没有什么区别,你可以用where限定更新条件,再save($data)中将你要更新的数据存在data里面。这样是你要把数据更新成一样的时候。如果更新的字段及值不一样的话,据我所知就只能一条条的循环更新了。
3、User-save($data);或者 User = M(User);User-create();User-save();要具体方式具体分析,总得来说,流程就是接受浏览器POST来的数据,然后调用模型的save方法来更新,或者直接使用create方法来接受并初始化POST过来的数据。但需要注意的是,数据库里需要已存在这条数据。
4、详见:ThinkPHP0完全开发手册 13 CURD操作 更新数据(Update):为了保证数据库的安全,避免出错更新整个数据表,如果没有任何更新条件,数据对象本身也不包含主键字段的话,save方法不会更新任何数据库的记录。
Q2: thinkphp如何语句支持多个字段搜索?
order by可以按一个或多个(最多16个)字段排序查询结果,可以是升序(ASC)也可以是降序(DESC),如果缺省,则是升序。order by中如果定义了多个字段,则按照字段的先后顺序排序。比如: order by * desc, * acs ;*为条件,条件的优先级和条件的先后顺序一致,order by通常放在SQL语句的最后。
Model-execute(update think_user set name=thinkPHP where status=1);关于原生SQL操作的一点补充 通常使用原生SQL需要手动加上当前要查询的表名,如果你的表名以后会变化的话,那么就需要修改每个原生SQL查询的sql语句了,针对这个情况,TP还提供了一个小的技巧来帮助解决这个问题。
你可以循环$userList,然后在循环里面分别查询每个用户的salary。但是其实可以一步实现的,只要改变一下sql。
select方法是返回符合条件的多条数据,可以是一条,也可以是一条以上。而find方法只能返回一条数据。
把这个逗号分隔的字符串字段进行拆分:一列转换为多行数据。然后和字文章进行关联查看下就可以查询出对应的文章了。
这种情况只能写SQL语句,不能用框架中带的。
Q3: thinkphp的where条件为在一个范围又不等于怎么写
where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询、表达式查询、快捷查询、区间查询、组合查询在内的查询操作。where方法的参数支持字符串和数组,虽然也可以使用对象但并不建议。
查询条件可以用于CURD等任何操作,作为where方法的参数传入即可。ThinkPHP可以支持直接使用字符串作为查询条件,但是大多数情况推荐使用索引数组或者对象来作为查询条件,因为会更加安全。
不用的哈,用什么PHP框架,就要多看这个框架的手册。http://document.thinkphp.cn/manual_3_html#where,就如此题来说,你传递过来的id值,就是表的主键。pid一般是为父键的意思,$catemodel-where(pid=%d,$_GET[id])-select();查询的是这个id所对应子集的。
你这个条件很好写啊,前面2个条件不变,后面的那个条件直接用in查询:where[name]=test;where[zhi]=zhi;where[shi]=array(in,array(shi,fou));user=M(user)-where($where)-select();这样就OK了。
楼上正解,用th的query函数,支持原生查询,返回来的同样就是一个关联数组的结果。
即使满足条件的数据不止一个,find方法也只会返回第一条记录(可以通过order方法排序后查询)。
Q4: ThinkPHP中查询数据库where()中的条件必须包含主键值吗
1、ThinkPHP内置了非常灵活的查询方法,可以快速的进行数据查询操作。查询条件可以用于CURD等任何操作,作为where方法的参数传入即可。ThinkPHP可以支持直接使用字符串作为查询条件,但是大多数情况推荐使用索引数组或者对象来作为查询条件,因为会更加安全。
2、详见:ThinkPHP0完全开发手册 13 CURD操作 更新数据(Update):为了保证数据库的安全,避免出错更新整个数据表,如果没有任何更新条件,数据对象本身也不包含主键字段的话,save方法不会更新任何数据库的记录。
3、thinkphp为了保证数据库的安全,避免出错更新整个数据表,如果没有任何更新条件,数据对象本身也不包含主键字段的话,save方法不会更新任何数据库的记录。所以我猜测你的form表单中没有传递id(不包含主键)的值,或者没有任何更新条件,最终导致你save()方法没有效果。
4、where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询、表达式查询、快捷查询、区间查询、组合查询在内的查询操作。where方法的参数支持字符串和数组,虽然也可以使用对象但并不建议。
Q5: thinkphp查询结果不为空
页面空白应该不是上面问题导致的,具体要看情况,参考以下建议:使用M(user) 替换 new Model(user),并在下一行使用var_dump($select) 输出查看数据结构。如果页面空白,说明数据库 或者 user 模型存在问题。
// 查找status值为1name值为think的用户数据 data = $User-where(name=thinkphp)-find();dump($data);select(别名findAll) 读取数据集,其实就是获取数据表中的多行记录(以及关联数据),使用select方法。
APP_DEBUG是否开启(可能是程序报错了)确定$select变量,是否不为空(数据库里是否有数据)volist标签用法看上去应该是没错的。
如果查询出错,find方法返回false,如果查询结果为空返回NULL,查询成功则返回一个关联数组(键值是字段名或者别名)。
define(APP_DEBUG, 1);把runtime文件夹的所有文件删掉。以上2点,还是空白的话。有可能是PHP版本过高(一些PHP函数被弃用了),TP版本过低导致的。
你应该是删除了模板缓存文件夹里面的缓存文件了吧?到config.php文件里,如果已有 TMPL_CACHE_ON = true, 就设置为false 如果没有,添加 TMPL_CACHE_ON = false 这样应该就可以暂时解决你的问题,然后你再逐步查看根源问题了。
thinkphpwhere语法的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于thinkphp select、thinkphpwhere语法的信息别忘了在本站进行查找喔。







