ThinkPHP项目下Mysql连接远程数据库操作!

需求: 服务器项目要用到远程其它数据库的数据;

原生态写法:


       $mysqli = new mysqli('远程数据库IP地址:端口号', '数据库账号', '数据库密码', '数据库名称'); 
        mysqli_set_charset($mysqli, "utf8");
        if(mysqli_connect_errno()){
            echo "连接数据库失败:" . mysqli_connect_error(); 
            exit;
        }
        
    
        //查询商品一级分类
        $sql = "select cat_id,cat_name,parent_id from goods_cat where parent_id = 0    ";
        $result = $mysqli->query($sql); 
        if ($mysqli->affected_rows > 0) { //查询有数据执行
            $option = '';
            while ($row = $result->fetch_assoc()) {
                $option .= "
"; } echo $option; }

用TP方法实现demo:

M(数据表,表前缀,数据库类型://账号:密码@IP地址:端口/数据库名);
踩坑:如果是MySQL数据库,数据库类型一定是 mysqli ,写成 mysql 会获取不到数据!
远程数据库使用 M('','',数据库类型://账号:密码@IP地址:端口/数据库名) 等同于 M() 方法!
      #当数据表没有前缀的时候,表前缀要设置成 NULL 或者 '    ' (中间一定要有空格)
        $model = M("products",'  ',"mysqli://root:[email protected]:8080/qpl_db");

      #当数据表有前缀的时候
        $model = M("cat",'goods_ ',"mysqli://root:[email protected]:8080/qpl_db");
        $res = $model->field("cat_id,cat_name,parent_id")->where("parent_id = 0")->select();
       echo $model->_sql(); 
        print_R($res); 

连接远程数据库查询数据,插入本地数据库。插入失败,解决方法。

1、$m = M();//首先实例化本地数据库模型

2、$model = M("goods_cat", ' ', $conn);//再实例化远程数据库

3、执行本地插入时,使用$m->add()或$m->execute($sql);

失败demo:

//ThinkPHP控制器 ,商品导入方法
    public function goodsImp() {



       // set_time_limit(0); 
        $conn = "mysqli://root:[email protected]:8080/qpl_db";
        $model = M("goods_cat", ' ', $conn);//实例化远程数据库



 获取远程数据,插入本地 。代码。。。。。。。。。



$res =  M()->execute($data);//执行本地数据库操作失败,
var_dump($res);   //bool(false) 
echo M()->_sql();   //执行sql失败,打印sql数据库执行成功


}


解决方法:

//ThinkPHP控制器 ,商品导入方法
    public function goodsImp() {



       // set_time_limit(0); 
        $m = M();//实例化本地数据库模型
        $conn = "mysqli://root:[email protected]:8080/qpl_db";
        $model = M("goods_cat", ' ', $conn);//实例化远程数据库



 获取远程数据,插入本地 。代码。。。。。。。。。


//把M()换成 $m
$res =  $m->execute($data);//执行本地数据库操作失败,
var_dump($res);   //int(28992)
echo $m->_sql();   //执行sql成功


}


你可能感兴趣的:(ThinkPHP项目下Mysql连接远程数据库操作!)