我正在失去$ conn'注意:未定义的变量:..例程.php中的conn',我不知道为什么。 index.php调用session.php,后者会获取db.php和例程.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();
}
?>
答案 0 :(得分:2)
您应该将$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
答案 1 :(得分:1)
您代码中的函数sql_source()没有局部变量<slot>
,在您的代码中该变量是在全局级别定义的。默认情况下,PHP不会“拉入”全局变量,相反,您必须告诉它使用
$conn
function sql_source($table, $name) {
global $conn;
$conn->setAttribute(...);
...
}
行将全局变量添加到本地范围。
将变量作为参数发送给函数:
global