循环中全局变量的php范围

循环中全局变量的php范围,php,Php,此代码连接到第一个数据库,循环并拾取一个名为“id”的字段,并将该id用作函数中另一个数据库的连接[数据库名称]。除了在函数中,id的值没有改变,因此无法连接到db之外,所有这些似乎都正常工作,即使它在局部变量中发生了变化。我想我需要取消设置和设置。有什么帮助吗?谢谢 <? $dbhost = "***"; $dbname = "users"; $dbuser = "****"; $dbpass = "***"; function myRecordHandler($record) {

此代码连接到第一个数据库,循环并拾取一个名为“id”的字段,并将该id用作函数中另一个数据库的连接[数据库名称]。除了在函数中,id的值没有改变,因此无法连接到db之外,所有这些似乎都正常工作,即使它在局部变量中发生了变化。我想我需要取消设置和设置。有什么帮助吗?谢谢

<?

$dbhost = "***";
$dbname = "users";
$dbuser = "****";
$dbpass = "***";

function myRecordHandler($record)
{
    global $dbhost;
    global $dbuser;
    global $dbpass;
    global $id;
    global $conn2;

    $db = mysql_select_db($id,$conn2) ;
    $quantity = $record["QUANTITY"];
    $price = $record["PRICE"];
    $mytotal ="INSERT into `mytotal`(`quantity`,`price`) VALUES ($quantity,$price)";
    mysql_query($mytotal,$conn2);
}

$conn1 = mysql_connect($dbhost, $dbuser, $dbpass, TRUE) or die("MySQL Error: " .mysql_error());
$conn2 = mysql_connect($dbhost, $dbuser, $dbpass, TRUE) or die("MySQL Error: " . mysql_error());

mysql_select_db($dbname,$conn1) or die("MySQL Error: " . mysql_error());
$query = "SELECT id,url FROM table userdata";
$result = mysql_query($query,$conn1);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    $id =$row['id'];
    $url=$row['url'];
    MagicParser_parse($url,"myRecordHandler","xml|PRODUCTS/PRODUCT/");
}
?>


我怀疑问题在于
myRecordHandler()
是从
MagicParser\u parse()
中调用的。它可能是在不共享相同全局名称空间的单独执行上下文中调用的。这只是一种预感,因为您将“myRecordHandler”作为字符串传递。

只是一个注意事项:您的代码似乎易于SQL注入,因为您没有逃逸这些值。很难说问题出在哪里。在脚本的不同位置添加
$id
的一些调试输出,以便更好地理解。调试显示函数中的id只有一个值集。嗯,非常混乱。为什么有两个mysql连接到同一个东西?当然。有一个包含文件。无论如何,打印出函数中id的值只显示一项。这可能意味着函数中应该存在某种全局变量的未设置和设置