file_get_content和变量问题

时间:2010-11-09 00:26:58

标签: php mysql function variables foreach

我有一个函数,它使用file_get_content来获取一些带有一些vars的html。然后我的想法就是用这个函数从db获取并返回它来更新变量。但是,在输出中,变量只读取$ myNameVar而不是My Name。让我粘贴我的代码。

    function query($query,$item)
    {
        $this->item = file_get_contents("/pages/items/".$item.".php");
        $this->queryResult = mysql_query($query);
        if(mysql_num_rows($this->queryResult))
      {
            while($row = mysql_fetch_assoc($this->queryResult))
            {
                extract($row);
                // $myNameVar = My Name;
                // in the finished code there will be a bunch (15 or more) vars
                // that needs to be updated in the Item file so the vars
                // must be updated automatically
                return $this->item;

            }
      }
    }

item.php的内容:

<p>My name is <span style="color: #000;">$myNameVar</span></p>

这是对函数的调用:

<?php echo $queryDb->query("SELECT * FROM sometable","item");?>

这是输出:

My Name is $myNameVar

应该是:

My Name is My Name

我试图将item.php文件中的变量替换为%%并运行foreach来更新变量,如此(不同的函数):

    function query($query,$item)
    {
        $this->item = file_get_contents("/pages/items/".$item.".php");
        $this->queryResult = mysql_query($query);
        if(mysql_num_rows($this->queryResult))
      {
            while($row = mysql_fetch_assoc($this->queryResult))
            {
                foreach ($row as $key => $value)
                {
                    $this->item = str_replace("%".$key."%",$value,$this->item);
                }
                return $this->item;

            }
      }
    }

这部分工作,遗憾的是这只返回每行的第一项。因此,如果在第一行$ myNameVar = Joe和第二行$ myNameVar = James,两个段落都会将名称列为Joe,如下所示:Joe Joe,而不是Joe James。

非常感谢任何帮助:)

3 个答案:

答案 0 :(得分:2)

那是因为file_get_contents()将文件内容作为字符串传递,而不是作为可执行的PHP代码传递。

改为使用include()

答案 1 :(得分:0)

如果您希望代码实际执行某些操作,您可能不应该在第一行返回。

 function query($query,$item)
        {
            $item = file_get_contents("/pages/items/".$item.".php");
$this->queryResult = mysql_query($query);
    if(mysql_num_rows($this->queryResult))
  {
        while($row = mysql_fetch_assoc($this->queryResult))
        {
            foreach ($row as $key => $value)
            {
                $this->item = str_replace("%".$key."%",$value,$this->item);
            }

return $item;

答案 2 :(得分:0)

<p>My name is <span style="color: #000;">$myNameVar</span></p>

需要

<p>My name is <span style="color: #000;"><?php echo $myNameVar ?></span></p>