php循环中全局变量的范围

时间:2012-01-19 20:02:59

标签: php

此代码连接到第一个数据库,循环并选取一个名为“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/");
}
?>

1 个答案:

答案 0 :(得分:0)

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