php include-如何在包含变量的地方使用变量?

| 我正在尝试包含一个文件,该文件正在从各种网站上抓取我的所有数据,但是该文件无法正常工作。这是我的代码。 首先,抓取php文件。名为scrapedata.php
<?php

//Include the Simple HTML DOM to use its functions, used by other following scripts.
//navigate to the content of variable html and save it in price data variable
//get the whole html of the webpage into variable html
include \'simple_html_dom.php\';
$html = file_get_html(\'http://www.play.com/Electronics/Electronics/4-/16230382/New-Apple-iPod-Touch-8GB-4th-Gen/Product.html?\');
$price_data = $html->find(\'h6[id=bodycontent_0_middlecontent_1_ctl00_ctl00_product_ctl00__overview_ctl00__dataControl__price__headerSix\',0)->plaintext; 


//Amazon.co.uk scrape
$amazon_html = file_get_html(\'http://www.amazon.co.uk/New-Apple-iPod-touch-Generation/dp/B0040GIZTI/ref=br_lf_m_1000333483_1_1_img?ie=UTF8&s=electronics&pf_rd_p=229345967&pf_rd_s=center-3&pf_rd_t=1401&pf_rd_i=1000333483&pf_rd_m=A3P5ROKL5A1OLE&pf_rd_r=1ZW9HJW2KN2C2MTRJH60\');
$amazon_pd = $amazon_html->find(\'b[class=priceLarge]\',0)->innertext;

libxml_use_internal_errors(true);

$dom = new DOMDocument();
$dom->loadHTML($amazon_html);

$xpath = new DOMXpath($dom);

$expr = \"/html/body/div[@id=\'divsinglecolumnminwidth\']/form[@id=\'handleBuy\']/table[3]/tr[3]/td/div/span\";
$nodes = $xpath->query($expr); // returns DOMNodeList object
// you can check length property i.e. $nodes->length

//echo $nodes->item(0)->nodeValue; // get first DOMNode object and its value
$stock_data = $nodes->item(0)->nodeValue;

if ( $stock_data == \"In stock.\" ) {
    $stockyesno = \"Yes\";
} else {
    $stockyesno = \"No\";
}

//Currys scrape
$currys_html = file_get_html(\'http://www.currys.co.uk/gbuk/apple-new-ipod-touch-8gb-4th-generation-07677427-pdt.html\');
$currys_pd = $currys_html->find(\'p[class=prd-amount]\',0)->plaintext;
$currys_stk = $currys_html->find(\'/html/body/div/div/div[2]/div/div/div[2]/div/ul[2]/li/span\')->plaintext;
//span[class=icon icon-check]\',0);

echo $currys_stk;

if ( $currys_stk == \"Available for home delivery\" ) {
    $currys_stockyesno = \"Yes\";
} else {
    $currys_stockyesno = \"No\";
}

//Argos scrape
$argos_html = file_get_html(\'http://www.argos.co.uk/static/Product/partNumber/9282197/Trail/searchtext%3EIPOD+TOUCH.htm\');
$argos_pd = $argos_html->find(\'span[class=actualprice]\',0)->plaintext; 

//Ebuyer scrape
$ebuyer_html = file_get_html(\'http://www.ebuyer.com/product/237805\');
$ebuyer_pd = $ebuyer_html->find(\'span[class=now]\',0)->plaintext;

//PcWorld scrape
$pcworld_html = file_get_html(\'http://www.pcworld.co.uk/gbuk/apple-new-ipod-touch-8gb-4th-generation-07677427-pdt.html\');
$pcworld_pd = $pcworld_html->find(\'p[class=prd-amount]\',0)->plaintext; 
?>
然后是我的页面(包括该页面),然后意味着要访问包含的文件中变量中的数据。
<?php include \'scrapedata.php\';?>     


   <!-- MYSQL DATABASE CODE -->
  <?php
$db_host = \'localhost\';
$db_user = \'admin\';
$db_pwd = \'1admin\';

$database = \'stock_checker\';
$table = \'price_stock\';

if (!mysql_connect($db_host, $db_user, $db_pwd))
    die(\"Can\'t connect to database\");

if (!mysql_select_db($database))
    die(\"Can\'t select database\");

?> 
<!-- MYSQL DATABASE CODE END-->
  //Insert the scraped data into the database.
mysql_query(\"INSERT INTO price_stock (retailer,price) VALUES(\'Play.com\', \'$play_pd\' )\") 
or die(mysql_error());
mysql_query(\"INSERT INTO price_stock (retailer,price,stock) VALUES(\'Amazon\', \'$amazon_pd\', \'$stockyesno\' )\") 
or die(mysql_error());
 mysql_query(\"INSERT INTO price_stock (retailer,price,stock) VALUES(\'Currys\', \'$currys_pd\', \'$currys_stk\' )\") 
or die(mysql_error());
mysql_query(\"INSERT INTO price_stock (retailer,price) VALUES(\'Argos\', \'$argos_pd\' )\") 
or die(mysql_error());
mysql_query(\"INSERT INTO price_stock (retailer,price) VALUES(\'eBuyer\', \'$ebuyer_pd\' )\") 
or die(mysql_error());
mysql_query(\"INSERT INTO price_stock (retailer,price) VALUES(\'PCWorld\', \'$pcworld_pd\' )\") 
or die(mysql_error());
?>
<!-- MYSQL DATABASE % TABLE CREATION CODE -->
<?php
// sending query
$result = mysql_query(\"SELECT * FROM {$table}\");
if (!$result) {
    die(\"Query to show fields from table failed\");
}

$fields_num = mysql_num_fields($result);


echo \"<table width=\'650px\'><tr>\";

// printing table headers
for($i=0; $i<$fields_num; $i++)
{
    $field = mysql_fetch_field($result);
    echo \"<td><b>{$field->name}</b></td>\";
}
echo \"</tr>\\n\";
// printing table rows
while($row = mysql_fetch_row($result))
{
    echo \"<tr>\";

    // $row is array... foreach( .. ) puts every element
    // of $row to $cell variable
    foreach($row as $cell)
        echo \"<td>$cell</td>\";

    echo \"</tr>\\n\";
}
mysql_free_result($result);


?>
我做得正确吗?我不知道是否会自动将它们包括在内,还是必须将它们设置为GLOBAL?     
已邀请:
这是一个非常糟糕的主意。 您应该使用函数;传递和返回值。在脚本的开头包含文件,并在需要时调用函数。请勿在您包含的文件中放置任何独立的(非功能性)代码。 (顺便说一下,下一步是OOP和自动加载器。) 而且,如果您想知道为什么这是一个非常糟糕的主意:我已经看过您的代码5次了(尽管没有进行深入的分析),但仍然没有弄清楚您想要共享什么变量在两个文件之间。如果我逐行浏览,我会找到它,但我不想逐行浏览。在更新代码后的3个月内,您也没有这样做。使我们的工作更轻松。 - 从一个角度看,对象是功能及其共享状态的集合。所以这是第三步:无功能->一些功能->在类中组合在一起的功能。甚至都不知道它有什么用,但是PHP就是这样说OOP的。自动加载是PHP用于按需加载类的机制,通常可以使您免于包含。     
它们不需要显式导入。 试试这个例子:
<?php
// a.php
$myVar = 123;
<?php
// b.php
include \'a.php\'
echo isset($myVar)?\'Included\':\'Not included\';
与您的已发布代码有关:我看不到将数据添加到数据库的位置。你不应该那样做吗?     
对此类请求使用DOM解析是一个坏主意。亚马逊发布了一个简单的API-在这里阅读:http://aws.amazon.com/de/     
包含文件中的PHP变量将以相同的名称出现在主文件中。 但是在您的代码中,我根本看不到变量被重用了吗?抓取会在变量中生成信息,然后您的主文件读取一个不相关的数据库表。这两个操作需要以某种方式关联。     

要回复问题请先登录注册