我有一个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语句中使用?