2013-12-17 43 views
0

我的PHP脚本中出现了一个非常奇怪的错误。当我在脚本中包含外部文件并访问包含文件中的某些变量时,每件事情都会在第一时间正常工作。当我将我的代码封装在一个函数中并尝试从另一个PHP脚本调用该函数时,出现错误,指出某些变量未声明(包含文件中的变量)。所以,当我包装我的代码在一个函数脚本无法找到外部变量时,当我不包装在一个函数中的代码每件事情工作正常......什么会导致这个问题?当向脚本添加功能时,PHP不包含文件

编辑:

这里是我的代码,我定义的变量:

<?php 


/* Database config */ 

$db_host  = 'xxx'; 
$db_user  = 'xxx'; 
$db_pass  = 'xxx'; 
$db_database  = 'xxxr'; 

/* End config */ 




$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_database); 
// If you are connecting via TCP/IP rather than a UNIX socket remember to add the port number as  a parameter. 

?> 

我想进入电影$ mysqli的

下面是其他代码:

<?php 

    include "connect.php"; 
    include "push.php"; 

    function findActions($actionID,$userName) 
    { 

    $actionID = "X0aUsz7QOC1GCJG9ZnY0UoRWoj35hKFt0LxpwtB8"; 
    $userName = "janne"; 

$currentDate = date('d/m/Y H:i'); 
$query = "SELECT * FROM ".$userName."actions WHERE actionID = ?"; 


    if($stmt = $mysqli->prepare($query)) 
    { 
$stmt->bind_param('s', $actionID); 
    $stmt->execute(); 
    $stmt->store_result(); 
    $stmt->bind_result($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l); 

while ($stmt->fetch()) 
{ 
    $result[] = array($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l); 


    $startDate = strtotime($j); 
    $endDate = strtotime($i); 
    $now = time(); 

    if ($now>= $startDate && $now<= $endDate) 
    { 

     $message = $e.":\n".$a; 

     $body['aps'] = 
     array(
       'alert' => $message, 
       'sound' => 'default' 
      ); 
     $payload = json_encode($body); 



     pushMessage($payload); 


    } 
    } 
    } 
    else 
    { 
    echo "Error"; 
    } 
    } 




?> 

我与全球尝试,但它并没有帮助:(

+4

请给出代码 – user4035

+2

[VARIABLE SCOPE!](http://www.php.net/manual/en/language.variables.scope.php) –

回答

0

您目睹了variable scoping的问题。默认情况下,您的函数将查找在本地范围内声明的变量。你可以指挥你的函数通过声明在外部文件中定义的变量global查找在全球范围变量:

function foo() { 
    global $bar, $baz, $qux; 
} 

假设$bar$baz$qux被分配在外部文件中的变量,一旦声明为global,它们将从您的函数范围内访问。

0

如果你将一个包含的文件包装在一个函数中,那么将在函数的范围内定义任何变量。也就是说,它们将成为局部变量,在全球范围内不可见。

你对此做了什么取决于你有的代码和你想要达到的目标。