重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
有的,可以使用strict来过滤非数据表字段。案例如下:
10年积累的成都网站制作、成都网站设计、外贸营销网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有渭南免费网站建设让你可以放心的选择与我们合作。
Db::name('user')-strict(true)-insert($data);
只需要在链式调用中使用strict方法并将其参数设置为true即可。
如果开启字段严格检查的话,在更新和写入数据库的时候,一旦存在非数据表字段的值,则会抛出异常。
如果数据库是用mysql的话
在数据库information_schema
表COLUMNS
记录有所有表字段名称的信息。
例如
SELECT * FROM `COLUMNS` WHERE TABLE_NAME='表A' AND COLUMN_NAME='字段B'
不要用mysql_fetch_object()这个函数来判断,这个返回来的是个数组;一般情况下是这么来判断的:$query="select * from ".$tablepre."common_members"." where username ='".$_POST['reg_username']."'";$result=mysql_query($query,$link);$num = mysql_num_rows($result); //取得结果集中行的数目if($num){echo 'script type="text/javascript"alert("用户名已被占用 ,请重新输入!");location.replace("../reg/index.php");/script';die();}
ThinkPHP内置的ORM和ActiveRecord模式实现了方便的数据存取操作,而且新版增加的连贯操作功能更是让这个数据操作更加清晰,但是ThinkPHP仍然保留了原生的SQL查询和执行操作支持,为了满足复杂查询的需要和一些特殊的数据操作,SQL查询的返回值因为是直接返回的Db类的查询结果,没有做任何的处理。而且可以支持查询缓存。主要包括下面两个方法:
1、query方法
query方法是用于sql查询操作,和select一样返回数据集,例如:
$Model = new Model() // 实例化一个model对象 没有对应任何数据表
$Model-query("select * from think_user where status=1");
2、execute方法
用于更新和写入数据的sql操作,返回影响的记录数,例如:
$Model = new Model() // 实例化一个model对象 没有对应任何数据表
$Model-execute("update think_user set name='thinkPHP' where status=1");
关于原生SQL操作的一点补充
通常使用原生SQL需要手动加上当前要查询的表名,如果你的表名以后会变化的话,那么就需要修改每个原生SQL查询的sql语句了,针对这个情况,TP还提供了一个小的技巧来帮助解决这个问题。