?php
创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站建设、成都网站制作、盐津网络推广、小程序制作、盐津网络营销、盐津企业策划、盐津品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供盐津建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
$link_A=mysql_connect("localhost:917","root","skcg1024",true);
mysql_select_db("db_a",$link_A);
$link_B=mysql_connect("localhost:917","root","skcg1024",true);
mysql_select_db("db_a",$link_B);
print_r($link_A);
print_r($link_B);
mysql_connect的第四个参数设置成true,表示创建一个新的连接
这样你就获得咯两个数据库连接,然后指定对应的数据库即可。但不建议这么做
建议采用数据库.数据表的格式 访问存储数据,代码简练,逻辑清楚
我感觉你可以把其他两个数据库中的表提取出来,全都放进一个数据库中,这样在添加的时候不就容易了吗?而且也不会带来其他的影响。我以前做的一个一个后台同时管理三个网站的程序时就是采用的这种方法。没有必要非要去连三个数据库的。
也许是我孤陋寡闻了,似乎没有办法跨库关联查询吧。如果非要跨库关联,我能想到的办法就是把两边的数据查询出来并存入一个临时表,再查询临时表。不过这种方法只是用于不同库中相同或相似的表,比如有的数据量较大的分库项目。
在回过头来看你的项目需求,其实根本不需要跨库的。首先在任意一个库里创建一个表,在发送会议信息给会员的时候,除了这个表的主键之外,只需要记录会员的id和会议的id,这两个id分别从两个库里获取。
你如果要查看某条会议信息发送的详情,就通过这两个id分别从两个库里获取会员信息和会议信息。
你如果要查询出列表,用笨办法,因为你这个表肯定和会员或会议其中一个在一个库了,可以关联,然后在列表循环中逐条查询另一个数据,虽然这样有些影响性能,但是也比“跨库关联查询”好点,况且如果数据多的话,一般都是分页操作的话,一个列表最多二三十条记录,一次查询二三十也不会有太大影响。
另一个笨办法,就是把发送记录列表中所有需要列出的字段都记录在发送会议信息的记录表里,这样就不需要在循环查询另一个表了。但缺点就是这里面的数据就不能和会员以及会议信息的数据同步,除非你在更新会员以和会议信息的数据的同时更新这个表的数据。
但不管用哪种方式,我觉得都比“跨库关联查询”要好,即使真的有“跨库关联查询”的方法。
这篇文章主要介绍了PHP同时连接多个mysql数据库的具体实现,需要的朋友可以参考下
实例:
代码如下:
?php
$conn1
=
mysql_connect("127.0.0.1",
"root","root","db1");
mysql_select_db("db1",
$conn1);
$conn2
=
mysql_connect("127.0.0.1",
"root","root","db2");
mysql_select_db("db2",
$conn2);
$sql
=
"select
*
from
ip";
$query
=
mysql_query($sql);
if($row
=
mysql_fetch_array($query))
echo
$row[0]."n";
$sql
=
"select
*
from
web
";
$query
=
mysql_query($sql);
if($row
=
mysql_fetch_array($query))
echo
$row[0];
?
这段代码存在问题,在程序执行时会报错:PHP
Warning:
mysql_fetch_array()
expects
parameter
1
to
be
resource,
boolean
given
in
....
原因分析:
程序开始建立两个数据库链接,函数mysql_query()原型:
resource
mysql_query
(
string
$query
[,
resource
$link_identifier
]
)
向与指定的连接标识符关联的服务器中的当前活动数据库发送一条查询。如果没有指定
link_identifier,则使用上一个打开的连接。如果没有打开的连接,本函数会尝试无参数调用
mysql_connect()
函数来建立一个连接并使用之。查询结果会被缓存。
在本例中由于没有指定link_identifier,所以,在执行第一条sql时,默认使用的是上一个打开的链接,即$conn2,而实际上第一条sql语句应该使用的是$conn1,所以导致报错,所以为了能够链接多个mysql数据库,可以使用如下方法:
方法1:在mysql_query函数中指定所用连接,即:
代码如下:
?php
$conn1
=
mysql_connect("127.0.0.1",
"root","root","db1");
mysql_select_db("Muma",
$conn1);
$conn2
=
mysql_connect("127.0.0.1",
"root","root","db2");
mysql_select_db("product",
$conn2);
$sql
=
"select
*
from
ip";
$query
=
mysql_query($sql,$conn1);
//添加连接$conn1
if($row
=
mysql_fetch_array($query))
echo
$row[0]."n";
$sql
=
"select
*
from
web
";
$query
=
mysql_query($sql,
$conn2);
if($row
=
mysql_fetch_array($query))
echo
$row[0];
?
方法2:在sql语句中关联所用数据库,此时可以省略mysql_query的第二个参数,即:
代码如下:
?php
$conn1
=
mysql_connect("127.0.0.1",
"root","root","db1");
mysql_select_db("db1",
$conn1);
$conn2
=
mysql_connect("127.0.0.1",
"root","root","db2");
mysql_select_db("db2",
$conn2);
$sql
=
"select
*
from
db1.ip";
//关联数据库
$query
=
mysql_query($sql);
if($row
=
mysql_fetch_array($query))
echo
$row[0]."n";
$sql
=
"select
*
from
db2.web
";
$query
=
mysql_query($sql);
if($row
=
mysql_fetch_array($query))
echo
$row[0];
?
$conn1=mysql_connect('...','...','...'); //将第一个数据库连接资源保存到变量conn1中
$conn2=mysql_connect('...','...','...'); //将第二个数据库连接资源保存到变量conn2中
然后在执行查询操作时,指定使用哪个连接资源,如:mysql_query('select ....',$conn1);
希望可以帮到你,谢谢!
实例化两条sql链接.例如 $wdb = mysql_connect('localhost','root','123456','a1');//负责写入的数据库$rdb = mysql_connect('192.168.xx.xx','root','123456','a2');//负责读的数据库这样就可以链接两个数据库了。