I have information spread out across a few databases and want to put all the information onto one webpage using PHP. I was wondering how I can connect to multiple databases on a single PHP webpage.
I know how to connect to a single database using:
$dbh = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
However, can I just use multiple "mysql_connect" commands to open the other databases, and how would PHP know what database I want the information pulled from if I do have multiple databases connected.
Best Answer
Warning :
mysql_xx
functions are deprecated since php 5.5 and removed since php 7.0 (see http://php.net/manual/intro.mysql.php), usemysqli_xx
functions or see the answer below from @TroelsknYou can make multiple calls to
mysql_connect()
, but if the parameters are the same you need to pass true for the '$new_link
' (fourth) parameter, otherwise the same connection is reused. For example:Then to query database 1 pass the first link identifier:
and for database 2 pass the second:
If you do not pass a link identifier then the last connection created is used (in this case the one represented by
$dbh2
) e.g.:Other options
If the MySQL user has access to both databases and they are on the same host (i.e. both DBs are accessible from the same connection) you could:
mysql_select_db()
to swap between as necessary. I am not sure this is a clean solution and you could end up querying the wrong database.SELECT * FROM database2.tablename
). This is likely to be a pain to implement.Also please read troelskn's answer because that is a better approach if you are able to use PDO rather than the older extensions.