当前位置:首页 » 操作系统 » thinkphp数据库

thinkphp数据库

发布时间: 2022-04-25 03:36:36

1. thinkphp数据库操作有哪些内置函数

8.4.4 Model类
getModelName() 获取当前Model的名称
getTableName() 获取当前Model的数据表名称
switchModel(type,vars=array()) 动态切换模型
table() 设置当前操作的数据表
field() 设置要查询的数据字段
where() 设置查询或者操作条件
data(data) 设置数据对象
order(order) 设置排序
limit(limit) 查询限制
page(page) 查询分页
join(join) 进行JOIN查询
having(having) 进行having查询
group(group) 进行group查询
lock(lock) 查询锁定
distinct(distinct) 唯一性查询
count(field) 记录统计
sum(field) 总数查询
min(field) 最小值查询
max(field) 最大值查询

avg(field) 平均值查询
_initialize() 模型初始化方法
_facade(data) 对保存到数据库的数据进行处理
_before_write(&data) 写入数据前的回调方法 包括新增和更新
add(data='',options=array()) 新增数据
_before_insert(&data,options) 写入数据前的回调方法
_after_insert(data,options) 写入数据后的回调方法
selectAdd(fields='',table='',options=array()) 通过Select方式添加记录
save(data='',options=array()) 更新数据到数据库
_before_update(&data,options) 更新数据前的回调方法
_after_update(data,options) 更新成功后的回调方法
delete(options=array()) 删除数据
_after_delete(data,options) 删除成功后的回调方法
select(options=array()) 查询数据集
_after_select(&resultSet,options) 查询成功后的回调方法
findAll(options=array()) select方法的别名
_options_filter(&options) 表达式过滤回调方法
find(options=array()) 查询数据
_after_find(&result,options) 查询成功的回调方法
setField(field,value,condition='') 设置记录的某个字段值
setInc(field,condition='',step=1) 字段值增长
setDec(field,condition='',step=1) 字段值减少
getField(field,condition='',sepa=' ') 获取某个字段值
create(data='',type='') 创建数据对象

autoCheckToken(data) 表单令牌验证

query(sql) 执行原生SQL查询

execute(sql='') 执行原生SQL操作

startTrans() 启动事务

commit() 提交事务

rollback() 事务回滚

getError() 获取模型的错误信息

getDbError() 获取数据库的错误信息

getLastInsID() 获取最后执行的SQL语句

getPk() 获取主键名称

getDbFields() 获取数据表的字段信息

regex(value,rule) 使用正则验证数据

setProperty(name,value) 设置模型的属性值

2.1版新增方法:

db(linkNum,config='') 切换当前数据库连接

高级模型类AdvModel

topN(count,options=array()) 查询满足条件的前N个记录

getN(position=0,options=array()) 查询符合条件的第N条记录

0 表示第一条记录 -1 表示最后一条记录

first(options=array()) 获取满足条件的第一条记录

last(options=array()) 获取满足条件的最后一条记录

returnResult(data,type='') 返回指定的数据类型

setLazyInc(field,condition='',step=1,lazyTime=0) 字段值延迟增长

setLazyDec(field,condition='',step=1,lazyTime=0) 字段值延迟减少

addConnect(config,linkNum=NULL) 增加数据库连接

delConnect(linkNum) 删除数据库连接

closeConnect(linkNum) 关闭数据库连接

switchConnect(linkNum,name='') 切换数据库连接

patchQuery(sql=array()) 批处理执行SQL语句

getPartitionTableName(data=array()) 得到分表的的数据表名

2. 怎么样配置thinkphp 与本地mysql和sql server同时连接俩个数据库

thinkphp 同时连接两个数据库的配置方法如下:
1、在Db.class.php脚本文件里面的类增加一个魔术方法__get(),写法如下:
public function __get($propertyName)
{ return $this->$propertyName;
}
这个方法是用来访问类中protected $config成员属性用的。有的人可能会说,直接把protected改成public岂不是更好。这样只解决了基类的问题,假如,子类也同样进行了受保护,那要你更改更多的文件,这是我们做IT程序员非常不愿意看到的事情。
2、在Model.class.php中的getTableName()方法更改如下:
$tablepre = $this->db->config['tablepre'];
if(empty($this->trueTableName)) {
$tableName??= empty($tablepre) ? $this->tablePrefix : $tablepre;
if(!empty($this->tableName)) {
$tableName .= $this->tableName;
}
else
{
$tableName .= parse_name($this->name);
}
$this->trueTableName? ? =? ?strtolower($tableName);
}
return (!empty($this->dbName)?$this->dbName.'.':'').$this->
trueTableName;这样就完成了多库自由切换时,导致的表前缀问题。
/*******************面向对象PDO连接方式*********************/
'DB_TYPE' => 'PDO', // 数据库类型
'DB_DSN' => 'mysql:host=localhost;dbname=master', // DSN连接。
'DB_USER' => 'root', // 数据库用户名
'DB_PWD' => '123456', // 数据库密码
'DB_PORT' => '3306', // 数据库端口
'DB_PREFIX' => 'g_', // 数据表前缀
'DB_CHARSET' => 'utf8', // 数据库编码默认采用utf8

3. thinkphp M数据库无法切换

//切换新数据库
$model=M();
//(sql_type://username:password@address:3306/db_name)
//sql_type:数据库类型mysql或者mysqli
$result=$model->db(1,"sql_type://username:password@address:3306/db_name");
//sql语句
$query_sql=XXXXXX;
//查询数据并返回
$data=$result->db(1)->query($query_sql);

4. thinkphp的数据库是在哪

这个你要先建一个数据库,然后在config.php文件或者直接在thinkphp文件夹下面的配置文件那里填写好数据库的名字,地址账号密码等然后才可以用的。
然后在控制器那里进行操作就行了。这里因为你还没有建表
所以要执行
$model = M();
$sql = 'CREATE TABLE IF NOT EXISTS `think_data`(`id` int(8) unsigned NOT NULL AUTO_INCREMENT,`data` varchar(255) NOT NULL,PRIMARY KEY(`id`)) ENGINE=MyISAM DEFAULT CHARSET = utf8';
$model->execute($sql);
这样表就建成了

然后同理
$sql = 'INSERT INTO `think_data`(`id`,`data`) VALUES(1,"thinkphp"),(2"PHP"),(3,"framework")';
$model->execute($sql);
就行了
大概就是这样子吧

5. thinkphp 如何手动连接数据库

//数据库配置1
'DB_CONFIG1' = array(
'db_type' => 'mysql',
'db_user' => 'root',
'db_pwd' => '1234',
'db_host' => 'localhost',
'db_port' => '3306',
'db_name' => 'thinkphp'
),
//数据库配置2
'DB_CONFIG2' => 'mysql://root:1234@localhost:3306/thinkphp';
这样,设置2个数据库。切换方法如下:
$this->db(1,"DB_CONFIG1")->query("查询SQL");
$this->db(2,"DB_CONFIG2")->query("查询SQL");
这样来调用,就可以了。至于里面的参数,你应该了解吧,DB2的配置也可以照第1个那样写,主要注意一下调用形式就可以了。希望帮到你
$this->db(1)->table("top_user")->find();
这个是指定表的查询,M的使用方法:
M("User","think_","DB_CONFIG1")->query("查询SQL");
think_是表前缀,2个库肯定不一样。

6. thinkphp支持哪些数据库

目前的数据库包括Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括对PDO的支持,如果应用需要使用数据库,必须配置数据库连接信息,数据库的配置文件有多种定义方式。

7. 通过ThinkPHP文件建立数据库数据表

if(!is_writable('config.php')){
emMsg('配置文件(config.php)不可写。如果您使用的是Unix/Linux主机,请修改该文件的权限为777。如果您使用的是Windows主机,请联系管理员,将此文件设为可写');
}
if(!is_writable(EMLOG_ROOT.'/content/cache')){
emMsg('缓存文件不可写。如果您使用的是Unix/Linux主机,请修改缓存目录(content/cache)下所有文件的权限为777。如果您使用的是Windows主机,请联系管理员,将该目录下所有文件设为可写');
}
$config="<?php "
."//mysqldatabaseaddress "
."define('DB_HOST','$db_host');"
." //mysqldatabaseuser "
."define('DB_USER','$db_user');"
." //databasepassword "
."define('DB_PASSWD','$db_pw');"
." //databasename "
."define('DB_NAME','$db_name');"
." //databaseprefix "
."define('DB_PREFIX','$db_prefix');"
." //authkey "
."define('AUTH_KEY','".getRandStr(32).md5($_SERVER['HTTP_USER_AGENT'])."');"
." //cookiename "
."define('AUTH_COOKIE_NAME','EM_AUTHCOOKIE_".getRandStr(32,false)."');"
." ";

$fp=@fopen('config.php','w');
$fw=@fwrite($fp,$config);
if(!$fw){
emMsg('配置文件(config.php)不可写。如果您使用的是Unix/Linux主机,请修改该文件的权限为777。如果您使用的是Windows主机,请联系管理员,将此文件设为可写');
}
fclose($fp);

//密码加密存储
$PHPASS=newPasswordHash(8,true);
$adminpw=$PHPASS->HashPassword($adminpw);

$dbcharset='utf8';
$type='MYISAM';
$table_charset_sql=$DB->getMysqlVersion()>'4.1'?'ENGINE='.$type.'DEFAULTCHARSET='.$dbcharset.';':'ENGINE='.$type.';';
if($DB->getMysqlVersion()>'4.1'){
$DB->query("ALTERDATABASE`{$db_name}`_general_ci;",true);
}

$widgets=Option::getWidgetTitle();
$sider_wg=Option::getDefWidget();

$widget_title=serialize($widgets);
$widgets=serialize($sider_wg);

define('BLOG_URL',getBlogUrl());

$sql="
DROPTABLEIFEXISTS{$db_prefix}blog;
CREATETABLE{$db_prefix}blog(
gidint(10)unsignedNOTNULLauto_increment,
titlevarchar(255)NOTNULLdefault'',
datebigint(20)NOTNULL,
contentlongtextNOTNULL,
excerptlongtextNOTNULL,
aliasVARCHAR(200)NOTNULLDEFAULT'',
authorint(10)NOTNULLdefault'1',
sortidint(10)NOTNULLdefault'-1',
typevarchar(20)NOTNULLdefault'blog',
viewsint(10)unsignedNOTNULLdefault'0',
comnumint(10)unsignedNOTNULLdefault'0',
attnumint(10)unsignedNOTNULLdefault'0',
topenum('n','y')NOTNULLdefault'n',
sortopenum('n','y')NOTNULLdefault'n',
hideenum('n','y')NOTNULLdefault'n',
checkedenum('n','y')NOTNULLdefault'y',
allow_remarkenum('n','y')NOTNULLdefault'y',
passwordvarchar(255)NOTNULLdefault'',
templatevarchar(255)NOTNULLdefault'',
PRIMARYKEY(gid),
KEYdate(date),
KEYauthor(author),
KEYsortid(sortid),
KEYtype(type),
KEYviews(views),
KEYcomnum(comnum),
KEYhide(hide)
)".$table_charset_sql."
INSERTINTO{$db_prefix}blog(gid,title,date,content,excerpt,author,views,comnum,attnum,top,sortop,hide,allow_remark,password)VALUES(1,'欢迎使用emlog','".time()."','恭喜您成功安装了emlog,这是系统自动生成的演示文章。编辑或者删除它,然后开始您的创作吧!','',1,0,0,0,'n','n','n','y','');
DROPTABLEIFEXISTS{$db_prefix}attachment;
CREATETABLE{$db_prefix}attachment(
aidint(10)unsignedNOTNULLauto_increment,
blogidint(10)unsignedNOTNULLdefault'0',
filenamevarchar(255)NOTNULLdefault'',
filesizeint(10)NOTNULLdefault'0',
filepathvarchar(255)NOTNULLdefault'',
addtimebigint(20)NOTNULLdefault'0',
widthint(10)NOTNULLdefault'0',
heightint(10)NOTNULLdefault'0',
mimetypevarchar(40)NOTNULLdefault'',
thumforint(10)NOTNULLdefault0,
PRIMARYKEY(aid),
KEYblogid(blogid)
)".$table_charset_sql."
DROPTABLEIFEXISTS{$db_prefix}comment;
CREATETABLE{$db_prefix}comment(
cidint(10)unsignedNOTNULLauto_increment,
gidint(10)unsignedNOTNULLdefault'0',
pidint(10)unsignedNOTNULLdefault'0',
datebigint(20)NOTNULL,
postervarchar(20)NOTNULLdefault'',
commenttextNOTNULL,
mailvarchar(60)NOTNULLdefault'',
urlvarchar(75)NOTNULLdefault'',
ipvarchar(128)NOTNULLdefault'',
hideenum('n','y')NOTNULLdefault'n',
PRIMARYKEY(cid),
KEYgid(gid),
KEYdate(date),
KEYhide(hide)
)".$table_charset_sql."
DROPTABLEIFEXISTS{$db_prefix}options;
CREATETABLE{$db_prefix}options(
option_idINT(11)UNSIGNEDNOTNULLauto_increment,
option_nameVARCHAR(255)NOTNULL,
option_valueLONGTEXTNOTNULL,
PRIMARYKEY(option_id),
KEYoption_name(option_name)
)".$table_charset_sql."
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('blogname','点滴记忆');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('bloginfo','使用emlog搭建的站点');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('site_title','');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('site_description','');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('site_key','emlog');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('log_title_style','0');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('blogurl','".BLOG_URL."');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('icp','');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('footer_info','');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('admin_perpage_num','15');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('rss_output_num','0');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('rss_output_fulltext','y');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('index_lognum','10');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('index_comnum','10');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('index_twnum','10');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('index_newtwnum','5');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('index_newlognum','5');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('index_randlognum','5');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('index_hotlognum','5');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('comment_subnum','20');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('nonce_templet','default');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('admin_style','default');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('tpl_sidenum','1');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('comment_code','n');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('comment_needchinese','y');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('comment_interval',60);
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('isgravatar','y');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('isthumbnail','y');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('att_maxsize','20480');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('att_type','rar,zip,gif,jpg,jpeg,png,txt,pdf,docx,doc,xls,xlsx');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('att_imgmaxw','420');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('att_imgmaxh','460');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('comment_paging','y');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('comment_pnum','10');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('comment_order','newer');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('login_code','n');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('reply_code','n');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('iscomment','y');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('ischkcomment','y');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('ischkreply','n');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('isurlrewrite','0');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('isalias','n');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('isalias_html','n');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('isgzipenable','n');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('isxmlrpcenable','n');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('ismobile','n');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('isexcerpt','n');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('excerpt_subnum','300');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('istwitter','y');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('istreply','n');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('topimg','content/templates/default/images/top/default.jpg');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('custom_topimgs','a:0:{}');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('timezone','8');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('active_plugins','');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('widget_title','$widget_title');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('custom_widget','a:0:{}');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('widgets1','$widgets');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('widgets2','');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('widgets3','');
INSERTINTO{$db_prefix}options(option_name,option_value)VALUES('widgets4','');

8. thinkphp 数据库查询怎么查

thinkphp如何查询数据库?

数据库查询

ThinkPHP内置了非常灵活的查询方法,可以快速的进行数据查询操作。

查询条件可以用于CURD等任何操作,作为where方法的参数传入即可。

ThinkPHP可以支持直接使用字符串作为查询条件,但是大多数情况推荐使用索引数组或者对象来作为查询条件,因为会更加安全。

查询方式

一、使用字符串作为查询条件

这是最传统的方式,但是安全性不高,例如:

1

2

$User = M("User"); // 实例化User对象

$User->where('type=1 AND status=1')->select();

最后生成的SQL语句是

1

SELECT * FROM think_user WHERE type=1 AND status=1

二、使用数组作为查询条件

1

2

3

4

5

$User = M("User"); // 实例化User对象

$condition['name'] = 'thinkphp';

$condition['status'] = 1;

// 把查询条件传入查询方法

$User->where($condition)->select();

最后生成的SQL语句是

1

SELECT * FROM think_user WHERE 'name'='thinkphp' AND status=1

如果进行多字段查询,那么字段之间的默认逻辑关系是 逻辑与 AND,但是用下面的规则可以更改默认的逻辑判断,通过使用 _logic 定义查询逻辑:

1

2

3

4

5

6

$User = M("User"); // 实例化User对象

$condition['name'] = 'thinkphp';

$condition['account'] = 'thinkphp';

$condition['_logic'] = 'OR'; //定义查询逻辑

// 把查询条件传入查询方法

$User->where($condition)->select();

最后生成的SQL语句是

1

SELECT * FROM think_user WHERE 'name'='thinkphp' OR `account`='thinkphp'


三、使用对象方式来查询 (这里以stdClass内置对象为例)

1

2

3

4

5

6

$User = M("User"); // 实例化User对象

// 定义查询条件

$condition = new stdClass();

$condition->name = 'thinkphp';

$condition->status= 1;

$User->where($condition)->select();

最后生成的SQL语句和上面一样

1

SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1

使用对象方式查询和使用数组查询的效果是相同的,并且是可以互换的,大多数情况下,我们建议采用数组方式更加高效,后面我们会以数组方式为例来讲解具体的查询语言用法。

表达式查询

上面的查询条件仅仅是一个简单的相等判断,可以使用查询表达式支持更多的SQL查询语法,并且可以用于数组或者对象方式的查询(下面仅以数组方式为例说明),查询表达式的使用格式:

1

$map['字段名'] = array('表达式','查询条件');

表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是:


1

2

3

4

$map['id'] = array('eq',100); id = 100;

$map['id'] = array('egt',100);id >= 100

$map['name'] = array('like','thinkphp%'); name like 'thinkphp%' 模糊查询

$map['a'] =array('like',array('%thinkphp%','%tp'),'OR');$map['b'] =array('notlike',array('%thinkphp%','%tp'),'AND'); (a like '%thinkphp%' OR a like '%tp') AND (b not like '%thinkphp%' AND b not like '%tp')

本文来自ThinkPHP框架技术文章栏目:http://www.php.cn/phpkj/thinkphp/

以上就是thinkphp如何查询数据库的详细内容,更多请关注php中文网其它相关文章!

9. thinkphp 用redis 怎么选择数据库

再配置一个数据库连接,设置默认数据库是redis,第二个数据库可选使用,比如:

$model=newModel();
$data=$model->db(1,'db2')->query($sql);//db2是在配置里的另外一个数据库连接

10. thinkphp配置数据库文件在哪

thinkphp\common文件夹中的convention.php中是tp的核心配置文件,不能乱动,如果要想更改里面的配置,在conf
文件夹里面的config.php可以配置,可以这样写
?php
return
array(
'db_type'
=

'mysql',//
数据库类型
'db_host'
=>
'127.0.0.1',//
数据库服务器地址
'db_name'
=>
'thinkphp',//
数据库名称
'db_user'
=>
'root',//
数据库用户名
'db_pwd'
=>
'123',//
数据库密码
'db_prefix'
=>
'tp_',//
数据表前缀
'db_charset'
=>
'utf8',//
网站编码
'db_port'
=>
'3306',//
数据库端口
'app_debug'
=>
false,//
开启调试模式
);
?>
也可以在最外边写,就是与thinkphp框架同一目录中写一个config.php文件,格式如同上面的一样,不过在conf
文件夹里面的config.php中得包含最外边的那个config.php

热点内容
四川密码门锁哪里有卖的 发布:2024-11-18 12:41:06 浏览:904
java获取天数 发布:2024-11-18 12:36:57 浏览:604
jdbcoracle连接数据库 发布:2024-11-18 12:08:40 浏览:821
服务器地址如何推送给客服 发布:2024-11-18 11:46:27 浏览:222
android滑动菜单左右 发布:2024-11-18 11:45:45 浏览:654
安卓如何把手机短信导入电脑 发布:2024-11-18 11:32:44 浏览:298
如何天选2查看电脑配置 发布:2024-11-18 11:32:36 浏览:422
phpinclude目录 发布:2024-11-18 11:29:38 浏览:723
西门子hmi屏反编译软件 发布:2024-11-18 11:29:36 浏览:764
安卓机如何看微信撤回消息 发布:2024-11-18 11:25:08 浏览:571