我正在做一个项目,我需要测试远程MySQL连接,如果它失败了,那么我需要代码切换到使用本地MySQL连接。 我遇到的问题是代码总是显示错误,这确实会杀死最终用户体验。
我尝试过的事情:
- 尝试捕获异常<- 让它显示自定义消息,但没有别的。
- 使用 @
- 对着电脑大喊大叫<- 不起作用,但我感觉好多了。
法典:
//-----Remote MySQL Server-----------
$rem_host="99.99.999.999"; //Host Name
$rem_user="testUser"; //MySQL Username
$rem_pass="testPass"; //MySQL Password
$rem_db="testDb"; //Database Name
//----Local MySQL Server-----------
$local_host="127.0.0.1"; //Host Name
$local_user="testLocal"; //MySQL Username
$local_pass="passLocal"; //MySQL Password
$local_db="localDb"; //Database Name
$remoteConnection = mysqli_connect("$rem_host","$rem_user","$rem_pass","$rem_db");
if(!$remoteConnection){ $check_connection=0; }
else{ $check_connection=1; mysqli_close($remoteConnection); }
if($check_connection==1){
$db_host = $rem_host; //Host Name
$db_user = $rem_user; //MySQL Username
$db_pass = $rem_pass; //MySQL Password
$db_name = $rem_db; //Database Name
}
else{
$db_host = $local_host; //Host Name
$db_user = $local_user; //MySQL Username
$db_pass = $local_pass; //MySQL Password
$db_name = $local_db; //Database Name
}
?>
根据您的选择更改第 2 行。首先我得到URL,然后检查它是否有"本地主机"字,然后我遵循本地主机详细信息(我在本地机器中使用本地主机/)。如果$actual_link无法获取本地主机,请遵循在线详细信息
<?php
$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
if (strpos($actual_link,'localhost') !== false)
{
//local db detail
$servername='localhost';
$dbusername='root';
$dbpassword='';
$dbname='db_gbook';
echo "local";
}
else
{
//online db detail
$servername='localhost';
$dbusername='dbaname';
$dbpassword='dbpassword';
$dbname='yourdbname';
echo "web";
}
global $link;
$link=mysql_connect ("$servername","$dbusername","$dbpassword");
if(!$link)
{
die("Could not connect to MySQL");
}
mysql_select_db("$dbname",$link) or die ("could not open db".mysql_error());
echo "Succesive";
?>