我看过每一个地方,可能用Google搜索我提出的问题的每一个变化,我已经尝试了所有的建议......我正在尝试连接到两个不同位置的两个不同的数据库($本地和$远程)只有第二个工作。这是我的代码示例(“...”=隐藏):
//-------------Local DB Connection:
$local = mysql_connect("localhost","root","...");
if (!$local)
{
die('Could not connect: ' . mysql_error());
}
$sel1 = mysql_select_db("new", $local);
//-------------Remote DB Connection:
$remote = mysql_connect("...","...","...",true);
if (!$remote)
{
die('Could not connect: ' . mysql_error());
}
$table = "...";
//---------function selecting from local:
function fncGrabNemsis($ele,$val){
mysql_select_db("new", $local);
$result = mysql_query("SELECT * FROM new.tblvalues
WHERE fldelement='$ele' AND fldcode='$val'",$local);
$tmprow = mysql_fetch_array($result);
return (isset($tmprow['fldvariable'])?$tmprow['fldvariable']:$val);
}
//----------Select run from Remote:
mysql_select_db("ImdxTest", $remote);
$result = mysql_query("SELECT * FROM ImdxTest.$table WHERE ClientID = ... AND IncidentNum = '$fldINCID'", $remote) or die(mysql_error());
$row = mysql_fetch_array($result);
我已经尝试过将mysql_select_db()函数调用到你能想到的所有地方以及其他所有内容......发生的事情是,我得到php错误,说$ local未定义或正在尝试的mysql函数使用$ local连接期望参数是资源!?我知道两个连接都可以工作,因为它们都是有效的。只有第二个连接($ remote)有效...非常感谢任何建议!
答案 0 :(得分:3)
fncGrabNemsis
需要全局变量$local
:
function fncGrabNemsis($ele,$val){
global $local;
mysql_select_db("new", $local);
$result = mysql_query("SELECT * FROM new.tblvalues
WHERE fldelement='$ele' AND fldcode='$val'",$local);
$tmprow = mysql_fetch_array($result);
return (isset($tmprow['fldvariable'])?$tmprow['fldvariable']:$val);
}
这可以帮助您更好地理解:http://php.net/manual/en/language.variables.scope.php
答案 1 :(得分:2)
$local
。请阅读:http://php.net/manual/en/language.variables.scope.php
[W]用户定义的函数a 本地功能范围介绍。 函数内使用的任何变量都是 默认情况下仅限于本地 功能范围。
在PHP中,与许多其他语言相反,外部范围在函数内是不可用的。您必须将变量作为参数传递(首选解决方案)或使用gloabal
关键字从全局范围导入变量。
答案 2 :(得分:2)
您正在函数中调用fncGrabNemsis
。当你打开一个函数时,你会得到一个关于变量的清单。以前存在的变量不再存在。 $local
现在未定义。
简单的方法是将$local
设置为全局值:
function fncGrabNemsis($ele,$val){
global $local;
mysql_select_db("new", $local);
...
然而,全局可能不是一个好主意。您应该重新编写代码,以便它们不必要。
答案 3 :(得分:1)
我发现你在函数中使用$local
,你应该使用global $local
从函数范围内引用全局范围$local
变量。