我失去了我的$ conn'注意:未定义的变量:conn in .. routines.php'我无法弄清楚为什么。 index.php调用session.php来获取db.php和routine.php但是routine.php不会接受$ conn,如下所示。我渴望学习,你能引导我朝着正确的方向前进吗?
的index.php
<?php require_once("session.php");?>
session.php文件
<?php session_start();
require_once("db.php");
require_once("routines.php");
$data=sql_source("table","name")
?>
routine.php
<?php
echo $status; THIS WORKS
function sql_source($table,$name){
$sql="SELECT ".$name." FROM ".$table;
$res=$conn->query($sql); **ERROR MESSAGE**:Notice: Undefined variable: conn in
return $res;
}
?>
db.php中
<php?
$initlocation="mysql:dbname=dbname;host=local";
$username="user";
$pwadat="pass";
try{
$conn = new PDO($initlocation, $username, $pwadat);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "</br>Conncetion is established</br>"; / THIS WORKS.
$status = $conn->getAttribute(PDO::ATTR_CONNECTION_STATUS);
}
catch(PDOException $e){
echo "Connection failed: " . $e->getMessage();
}
?>
你应该将$conn
变量传递给sql_source
函数:
function sql_source($table,$name,$conn){
$sql="SELECT ".$name." FROM ".$table;
$res=$conn->query($sql); **ERROR MESSAGE**:Notice: Undefined variable: conn in
return $res;
}
然后调用此函数:
$data=sql_source("table","name", $conn);
你应该阅读更多关于变量范围的信息:Variable scope
代码中的函数sql_source()没有局部变量$conn
,在代码中变量是在全局级别定义的。 PHP默认情况下不会“拉入”全局变量,而是必须告诉它使用它
function sql_source($table, $name) {
global $conn;
$conn->setAttribute(...);
...
}
global
行将全局变量添加到本地范围。
将变量作为参数发送到函数:
function sql_source($table, $name, $conn) {
$conn->setAttribute(...);
...
}
sql_source("table", "name", $conn); // Calling the function