thinkphp链接数据库
⑴ thinkphp连接数据库sqlSTATE[HY000] [2002]错误怎么办
通过查找,是数据库链接的问题。比如,在本地操作,就将数据库的用户名,密码,服务器地址等相应换成本地的。
⑵ ThinkPHP中连接不上数据库是什么原因
你不贴代码,看不出来,ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理。目前的数据库包括Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括对PDO的支持。
下面是全局定义方式:
'DB_TYPE'=>'mysql',
'DB_HOST'=>'localhost',//服务器地址
'DB_NAME'=>'thinkphp',//数据库名
'DB_USER'=>'root',//用户名
'DB_PWD'=>'123456',//密码
'DB_PORT'=>3306,//端口
'DB_PREFIX'=>'think_',//数据库表前缀
'DB_CHARSET'=>'utf8',//字符集'
‘DB_DEBUG'=>TRUE,//数据库调试模式
DB_DSN方式
'DB_DSN'=>'mysql://root:123456@localhost:3306/thinkphp#utf8'
如果采用PDO驱动的话:
'DB_TYPE'=>'pdo',//数据库类型
'DB_USER'=>'root',//用户名
'DB_PWD'=>'',//密码
'DB_PREFIX'=>'think_',//数据库表前缀
'DB_DSN'=>'mysql:host=localhost;dbname=thinkphp;charset=utf8'
仅供参考,对比下自己的代码!
⑶ 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个库肯定不一样。
⑷ thinkphp5.1连接数据库
在应用配置目录或者模块配置目录(不清楚配置目录位置的话参考配置章节)下面的database.php中(后面统称为数据库配置文件)配置下面的数据库参数:
return [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'thinkphp',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '',
// 数据库连接端口
'hostport' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'think_',
];
系统默认支持的数据库type包括:
type 数据库
mysql MySQL
sqlite SqLite
pgsql PgSQL
sqlsrv SqlServer
type参数支持命名空间完整定义,不带命名空间定义的话,默认采用\think\db\connector作为命名空间,如果使用应用自己扩展的数据库驱动,可以配置为:
// 数据库类型
'type' => '\org\db\Mysql',
表示数据库的连接器采用 \org\db\Mysql类作为数据库连接驱动,而不是默认的\think\db\connector\Mysql。
⑸ thinkphp 怎么连接sqlserver数据库
到微软官网下载文件,网址:网络搜索
选择“SQLSRV20.EXE”,点击"next"(下一步),进行下载
右键解压到当前目录,把这两个文件拷贝到PHP目录下的ext目录下
下图是拷贝后的结果,请参考,不要拷错了。
打开php-ini 在文件中设置,加上下面两行代码,如下图
下面这里设置为On,保存,重启服务,如下图
修改thinkphp配置文件,如下图
thinkphp控制器文件,随便查个sqlserver表中的数据,看是否能成功打印,如果成功打印,那么证明数据库连接成功。如果不能正确打印,那么看报错提示,在按照提示解决问题。
⑹ 怎么样配置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;这样就完成了多库自由切换时,导致的表前缀问题。
⑺ thinkphp如何连接多个数据库
1、onfig.php文件
'LOAD_EXT_CONFIG'
=>'db,db_config',
//
加载扩展
配置文件
。多个文件用逗号分隔
//其中db.php中放置的是mysql的配置
//db_config放置的是
sqlserver
的配置
2、其中db.php内容如下
return
array(
'DB_TYPE'=>'mysql',
'DB_HOST'=>'
localhost
',
'DB_NAME'=>'your_mysql_dbname',
'DB_USER'=>'your_mysql_user_name',
'DB_PWD'=>'123456',
'DB_PORT'=>'3306',
'DB_PREFIX'=>'',
);
db_config.php内容如下
return
array(
'DB_CONFIG1'
=>
array(
'db_type'
=>
'pdo',
'db_user'
=>
'XX',
'db_pwd'
=>
'XXXXXXXX',
'DB_DSN'
=>
'sqlsrv:Server=XXXXXX;Database=XXXX',
),
);
3、在Lib/Model下新建一个专门的模型
class
SqlsrvModel
extends
Model
{
protected
$
connection
=
'DB_CONFIG1';
}
4、可以在Action
中调
各个模型了
⑻ thinkphp5 怎么同时连接mysql和sqlserver 2种数据库
到微软官网下载文件,网址:网络搜索选择“SQLSRV20.EXE”,点击"next"(下一步),进行下载右键解压到当前目录,把这两个文件拷贝到PHP目录下的ext目录下下图是拷贝后的结果,请参考,不要拷错了。打开php-ini在文件中设置,加上下面两行代码,如下图下面这里设置为On,保存,重启服务,如下图修改thinkphp配置文件,如下图thinkphp控制器文件,随便查个sqlserver表中的数据,看是否能成功打印,如果成功打印,那么证明数据库连接成功。如果不能正确打印,那么看报错提示,在按照提示解决问题。
⑼ PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
本文实例讲述了PHP利用pdo_odbc实现连接数据库。分享给大家供大家参考,具体如下:
目的:从sql
server数据库里面把某个视图文件调用出来,以键值对的方式显示在页面上。
利用pdo
odbc来实现PHP连接数据库:
在PHP配置文件里面开启pdo_odbc.dll服务。重启Apache服务器。
在ThinkPHP5.1的项目中在模块里添加config添加规定好的样式数据库:
代码如下:
<?php
return
[
//
数据库类型
'type'
=>
'sqlsrv',
//
服务器地址
'hostname'
=>
'localhost',
//
数据库名
'database'
=>
'mysql',
//
用户名
'username'
=>
'sa',
//
密码
'password'
=>
'123456',
//
端口
'hostport'
=>
'',
//
连接dsn
'dsn'
=>
'odbc:Driver={SQL
Server};Server=localhost;Database=mysql',
//
数据库连接参数
'params'
=>
[],
//
数据库编码默认采用utf8
'charset'
=>
'utf8',
//
数据库表前缀
'prefix'
=>
'',
//
数据库调试模式
'debug'
=>
true,
//
数据库部署方式:0
集中式(单一服务器),1
分布式(主从服务器)
'deploy'
=>
0,
//
数据库读写是否分离
主从式有效
'rw_separate'
=>
false,
//
读写分离后
主服务器数量
'master_num'
=>
1,
//
指定从服务器序号
'slave_no'
=>
'',
//
是否严格检查字段是否存在
'fields_strict'
=>
true,
//
数据集返回类型
'resultset_type'
=>
'array',
//
自动写入时间戳字段
'auto_timestamp'
=>
false,
//
时间字段取出后的默认时间格式
'datetime_format'
=>
'Y-m-d
H:i:s',
//
是否需要进行SQL性能分析
'sql_explain'
=>
false,
//
Builder类
'builder'
=>
'',
//
Query类
'query'
=>
'\\think\\db\\Query',
//
是否需要断线重连
'break_reconnect'
=>
false,
//
断线标识字符串
'break_match_str'
=>
[],
];
?>
在控制器controller里面建一个控制文件Test.php
代码如下:
<?php
namespace
app\index\controller;
use
think\Db;
use
think\Controller;
class
Test
extends
Controller
{
public
function
zz(){
$data=Db::view('View_2')->select();
echo
json_encode($data);
}
}
?>
最后调用入口文件即可访问。
http://localhost:81/1111/tp5/public/index/test/zz
我的效果:
[{"111":"123","1112":"LLP","232":"1","ROW_NUMBER":"1"},{"111":"123","1112":"BB","232":"2","ROW_NUMBER":"2"}]
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend
FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
您可能感兴趣的文章:ThinkPHP实现多数据库连接的解决方法tp5(thinkPHP5)框架实现多数据库查询的方法ThinkPHP3.1新特性之多数据库操作更加完善tp5(thinkPHP5)框架连接数据库的方法示例PHP7使用ODBC连接SQL
Server2008
R2数据库示例【基于thinkPHP5.1框架】thinkPHP5实现的查询数据库并返回json数据实例tp5(thinkPHP5)操作mongoDB数据库的方法tp5(thinkPHP5)框架数据库Db增删改查常见操作总结thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例