PHP包括在包含之前未看到变量集的文件

时间:2018-02-15 21:36:02

标签: php variables pdo include

我有一个main.php文件。

在这个文件中,我包括我的PDO / DB连接,如下所示:

PDO的内容包括文件:

$dbhost = 'blah';
$dbname = 'blah';
$dbuser = 'blah'; //Read/Write
$dbpass = 'blah';
$conn = new PDO('mysql:host=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass);

包含在主文件中,如下所示:(我也在其后声明表名)

include '../_include/path_to_pdo.php';
$tablename = 'some_table_name';

我有另一个文件,包括基本上只是一个文件,其中包含了保持主文件更易读的函数,并且没有所有数据库内容,只使用预定的函数。

include 'external_functions.php';

在这个external_functions.php文件中..是一组函数,它们在执行时将返回/输出MAIN.php文件中的数据(或markup..whatever)。

这些函数进行数据库调用......等等。

但是,external_functions.php文件中的这些函数没有看到:

$tablename
$conn

在MAIN.php文件中声明了vars ..或在PDO连接/设置中声明...

在external_functions.php文件中..如果我回显:

$tablename

显示正常..

但不是在函数内部使用时...也不是在PDO包含文件中声明的$ conn数据库句柄var。

我甚至试图将$ tablename作为参数传递给函数..

功能的例子:

function get_someList($tablename){ //doesnt work, var not seen
    //get some list
    $someDetails_sql = "SELECT * FROM $tablename ORDER BY category"; //doesnt work
    $someDetails_stmt = $conn->prepare($someDetails_sql);
    $someDetails_stmt->execute();
    $someDetails_stmt->setFetchMode(PDO::FETCH_ASSOC);
    $_someList = $someDetails_stmt->fetchAll(); //returns multi-dimensional array (and correct count)

    //do whatever

}

我该如何解决这个问题?我做错了什么?如果在函数外面,$ tablename echo's fine ...函数内部丢失了吗? (甚至在试图将其作为一个论点时?为什么???

另外,我如何将$ conn var传递给函数,以便它也可以在query / prepare语句中使用?

0 个答案:

没有答案