thinkPHP 查询数据库字段

来源:互联网 发布:musical软件 编辑:程序博客网 时间:2024/05/16 10:56
/*** 查询指定的字段是否存在表中* @param type $field 字段名称* @return void* @access protected*/protected function issetField($field){$fields=$this->model->getDbFields();return array_search($field,$fields); }

从3.1版本开始,模型的字段缓存文件名全部转换成小写,避免重复生成。
可以通过设置DB_FIELDS_CACHE 参数来关闭字段自动缓存,如果在开发的时候经常变动数据库的结构,而不希望进行数据表的字段缓存,可以在项目配置文件中增加如下配置:
  1. 'DB_FIELDS_CACHE'=>false
注意:调试模式下面由于考虑到数据结构可能会经常变动,所以默认是关闭字段缓存的。
如果需要显式获取当前数据表的字段信息,可以使用模型类的getDbFields方法来获取当前数据对象的全部字段信息,例如:
  1. $fields = $User->getDbFields();
如果你在部署模式下面修改了数据表的字段信息,可能需要清空Data/_fields目录下面的缓存文件,让系统重新获取更新的数据表字段信息,否则会发生新增的字段无法写入数据库的问题。
如果不希望依赖字段缓存或者想提高性能,也可以在模型类里面手动定义数据表字段的名称,可以避免IO加载的效率开销,在模型类里面添加fields属性即可,定义格式如下:
  1. <?php
  2.     class UserModel extends Model{
  3.         protected $fields = array(
  4.             'id', 'username', 'email', 'age', '_pk' => 'id', '_autoinc' => true
  5.         );
  6.     }
其中_pk 表示主键字段名称 _autoinc 表示主键是否自动增长类型,定义了fields属性之后,就不会自动获取数据表的字段信息了。如果有修改或者增加字段,必须手动修改fields属性的值。

array_search() 

函数在数组中搜索某个键值,并返回对应的键名。

详细说明

array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。

在 PHP 4.2.0 之前,函数在失败时返回 null 而不是 false。

如果第三个参数 strict 被指定为 true,则只有在数据类型和值都一致时才返回相应元素的键名。

语法

array_search(value,array,strict)
参数描述value必需。规定需要搜素的键值。array必需。规定被搜索的数组。strict

可选。如果该参数被设置为 TRUE,则函数在数组中搜索数据类型和值都一致的元素。可能的值:

  • true
  • false - 默认

如果设置为 true,则在数组中检查给定值的类型,数字 5 和字符串 5 是不同的(参见实例 2)。

技术细节

返回值:

如果在数组中找到指定的键值,则返回对应的键名,否则返回 FALSE。

如果在数组中找到键值超过一次,则返回第一次找到的键值所匹配的键名。

PHP 版本:4.0.5+更新日志:

如果向函数传递无效的参数,函数返回 NULL(这个适用于自 PHP 5.3.0 起的所有的 PHP 函数)。

自 PHP 4.2.0 起,如果搜索失败,该函数返回 FALSE,而不是 NULL。

更多实例

在数组中搜索键值 5,并返回它的键名(注意 ""):

<?php$a=array("a"=>"5","b"=>5,"c"=>"5");echo array_search(5,$a,true);?>
输出: b

0 0
原创粉丝点击