//第一种,在 *model.class.php:protected $dbname = 'ybdbshop'; //库名,也可以从配置文件,或者 d() 参数设置;protected $tablename = 'abc'; //不加前缀的表名,也可以从类名设计;protected $tableprefix=; //表前缀;
//第二种:protected $connection = array( 'db_type' => 'mysql', 'db_user' => 'root', 'db_pwd' => '', 'db_host' => 'localhost', 'db_port' => '3306', 'db_name' => 'ybdbcjd', //库名 'db_charset' => 'utf8',);
这俩到底什么区别?
为什么 第一种 我有时候用 不出错,而我把整个项目都复制到 另一台电脑,就不行了?
回复内容: //第一种,在 *model.class.php:protected $dbname = 'ybdbshop'; //库名,也可以从配置文件,或者 d() 参数设置;protected $tablename = 'abc'; //不加前缀的表名,也可以从类名设计;protected $tableprefix=; //表前缀;
//第二种:protected $connection = array( 'db_type' => 'mysql', 'db_user' => 'root', 'db_pwd' => '', 'db_host' => 'localhost', 'db_port' => '3306', 'db_name' => 'ybdbcjd', //库名 'db_charset' => 'utf8',);
这俩到底什么区别?
为什么 第一种 我有时候用 不出错,而我把整个项目都复制到 另一台电脑,就不行了?
这个问题我刚才已经回答过你了。
class classonemodel extends model{ protected $dbname = 'ybdbcjd'; }
中的$dbname是干什么的。
它是用来操作同一个mysql账户下的另外数据库的,如果你的同一个mysql账户中确实有这个数据库,并且有相应权限的话,是可以正确执行的。生成的类似sql语句为:
select * from ybdbcjd.table
这并非thinkphp自身意义上的切换数据库,而是mysql自身的跨数据库操作语法,局限性较大,不建议使用。
是在当前数据库的环境下操作别的数据库。
use db1select * from db2.table
但是第二种直接修改$connection的意义在于切换了数据库连接。
是在别的数据库下操作别的数据库。
use db2select * from tablez
区别就在这里。
如果是少量的操作可以跨数据库,否则直接新建数据库连接即可。