php里面如何跨文件访问变量?

比如我的a.php的内容为:<?php$DbServer='192.168.1.106:1265';$User='wx';$Password='wx123456';?>然... 比如我的a.php的内容为:
<?php
$DbServer = '192.168.1.106:1265';
$User = 'wx';
$Password = 'wx123456';
?>
然后在我的b.php里面有一个方法为:
function CreateConn()
{
$con = mysql_connect($DbServer, $User, $Password);
if (!$con)
die('Could not connect: ' . mysql_error());

mysql_select_db("wenxibiz_wxstock", $con);
return $con;
}

会报错说:
Notice: Undefined variable: DbServer in C:\xampp\htdocs\wx\Utilities\GenConn.php on line 6

Notice: Undefined variable: User in C:\xampp\htdocs\wx\Utilities\GenConn.php on line 6

Notice: Undefined variable: Password in C:\xampp\htdocs\wx\Utilities\GenConn.php on line 6
请问这个是怎么回事,该如何解决呢?我是新手。。
展开
 我来答
shenmdyw
推荐于2016-05-21 · TA获得超过670个赞
知道小有建树答主
回答量:897
采纳率:100%
帮助的人:245万
展开全部

PHP变量是有作用域(指定的有效范围)的:

函数内声明的变量只对该函数有效,出了函数的范围就会无效;

同理在函数以外声明的变量在函数中访问也是无效的;

函数内的变量跨函数访问也是无效的。


 解决方法:

        函数中的变量要想让其全局有效必须得在变量前面加global关键字声明成全局变量才可以在函数以外访问到;同理在函数外声明的函数如果想要在函数中来访问,也要使用global关键字来声明为全局变量。


关于php变量作用域的示范:

举例有php文件b.php如下:

<?php
 
    function func1(){
        global $a2;
        $a1 = 'var a1 In file b function func1';
        $a2 = 'var a2 In file b function func1';
    }
 
?>

   


然后有php文件a.php如下:

<?php
 
    error_reporting(0);    //关闭错误报告
    include('b.php');    //引用b.php
    $a3 = 'var a3 In file a out of function';
    $a4 = 'var a4 In file a out of function';
      
    function func2(){
        global $a5;
        $a5 = 'var a5 In file a function func2';
        $a6 = 'var a6 In file a function func2';
    }       
      
    function func3(){
        echo 'print var $a1 to $a6 in function func3:';
        var_dump($a1);
        var_dump($a2);
        var_dump($a3);
        var_dump($a4);
        var_dump($a5);
        var_dump($a6);
    }
      
    function func4(){
        echo 'print var $a1 to $a6 in function func4:';
        global $a1;
        global $a2;
        global $a3;
        global $a4;
        global $a5;
        global $a6;
        var_dump($a1);
        var_dump($a2);
        var_dump($a3);
        var_dump($a4);
        var_dump($a5);
        var_dump($a6);
    }
     
    echo 'print var $a1 $a2 $a5 $a6 in file a:';
    var_dump($a1);
    var_dump($a2);
    var_dump($a5);
    var_dump($a6);
    func3();
    func4();
      
    func1();
    func2();
      
    echo 'print var $a1 $a2 $a5 $a6 in file a(after call func1 and func2):';
    var_dump($a1);
    var_dump($a2);
    var_dump($a5);
    var_dump($a6);
    func3();
    func4();
  
?>

 

执行a.php后就会输出:

print var $a1 $a2 $a5 $a6 in file a:    <!--$a1 $a2 $a5 $a6都被声明在函数中,此时因为函数未被调用,所以都无法正确取值-->
null
 
null
 
null
 
null
 
print var $a1 to $a6 in function func3:    <!--$a1 $a2 $a5 $a6同上,$a3和$a4因为在函数外声明所以全部无法正确取值-->
null
 
null
 
null
 
null
 
null
 
null
 
print var $a1 to $a6 in function func4:    <!--$a1 $a2 $a3 $a4同上,$a3和$a4用global声明为全局了,所以可以正确取值-->
null
 
null
 
string 'var a3 In file a out of function' (length=32)
 
string 'var a4 In file a out of function' (length=32)
 
null
 
null
 
print var $a1 $a2 $a5 $a6 in file a(after call func1 and func2):    <!--在执行func1和func2之后被关键字声明为全局变量的$a2和$a5可以被正确取值-->
null
 
string 'var a2 In file b function func1' (length=31)
 
string 'var a5 In file a function func2' (length=31)
 
null
 
print var $a1 to $a6 in function func3:    <!--因为所有变量不是声明在函数func3外就是被声明在其他函数中,所以都无法正确取值-->
null
 
null
 
null
 
null
 
null
 
null
 
print var $a1 to $a6 in function func4:    <!--除了在其它函数内未被声明为全局的$a1和$a6,其他变量均被正确取值-->
null
 
string 'var a2 In file b function func1' (length=31)
 
string 'var a3 In file a out of function' (length=32)
 
string 'var a4 In file a out of function' (length=32)
 
string 'var a5 In file a function func2' (length=31)
 
null

   


上面的代码可以让你很好的理解变量作用域的规则。

次子小标
推荐于2016-10-01 · TA获得超过146个赞
知道答主
回答量:77
采纳率:0%
帮助的人:90万
展开全部

你这个是涉及到全局变量问题,有几种方法

首先,肯定要引入a文件

include 'a.php'


一、global

$str = 'hello';
function test()
{
    global $str;
    echo $str;
    echo $GLOBAL['str'];//这两个效果一样
}
test();//输出 hello

二、define定义全局变量

define('STR','hello');
function test()
{
    echo STR;
}
test();//输出hello

 注意,这个STR前面不要$

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
哈瑞杰软件培训
2013-11-01 · TA获得超过474个赞
知道小有建树答主
回答量:462
采纳率:0%
帮助的人:207万
展开全部
require 'a.php';

b。php的函数里 global声明 那3个全局变量 或者函数的参数传进去
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式