美文网首页
ThinkPHP项目下Mysql连接远程数据库操作!

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

作者: DragonersLi | 来源:发表于2017-08-12 14:49 被阅读68次

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

原生态写法:


       $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 = '<option value="-1" >请选择</option>';
            while ($row = $result->fetch_assoc()) {
                $option .= "<option value='" . $row['cat_id'] . "'>" . $row['cat_name'] . "</option><br>";
            }
            echo $option;
        }


用TP方法实现demo:

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

      #当数据表有前缀的时候
        $model = M("cat",'goods_ ',"mysqli://root:123456@127.0.0.1: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:123456@127.0.0.1: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:123456@127.0.0.1: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连接远程数据库操作!

    需求: 服务器项目要用到远程其它数据库的数据; 原生态写法: 用TP方法实现demo: M(数据表,表前缀,数据库...

  • Linux下数据库操作

    数据库操作 登陆 mysql -uroot -p 远程连接 mysql -hip地址 -uroot -p 创建 c...

  • mysql基本操作

    连接本地mysql数据库 连接远程数据库:

  • 2018-12-14

    设置MySQL允许远程连接 1、连接数据库 mysql –uroot –p123456 2、增加远程连接权限 GR...

  • mysql命令

    连接本地数据库: mysql -uUser -pPassword连接远程主机的mysql: mysql -h110...

  • linux系统远程连接mysql

    Linux系统MySQL开启远程连接 远程连接服务器上的MySQL。 Navicat软件连接数据库报错:2003-...

  • mac下进入mysql命令行

    这里介绍terminal中,分别连接本地mysql数据库和连接远程mysql数据库的方法。 一、连接本地的数据库并...

  • 解决远程连接mysql错误1130

    解决远程连接mysql错误1130 远程连接Mysql服务器的数据库,错误代码是1130,ERROR 1130: ...

  • 解决远程连接mysql错误1130

    解决远程连接mysql错误1130 远程连接Mysql服务器的数据库,错误代码是1130,ERROR 1130: ...

  • 6PHP 操作 MySQL 数据库

    [TOC] PHP 操作 MySQL 数据库 连接 MySQL 服务器,连接数据库 进行数据库的操作(CURD) ...

网友评论

      本文标题:ThinkPHP项目下Mysql连接远程数据库操作!

      本文链接:https://www.haomeiwen.com/subject/fnqjrxtx.html