首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql_connect和mysql_selectdb没有将一些变量作为参数的奇怪问题

mysql_connect和mysql_selectdb没有将一些变量作为参数的奇怪问题
EN

Stack Overflow用户
提问于 2011-02-06 04:07:37
回答 4查看 2.2K关注 0票数 1

在LAMP环境中,我在我协助的PHP课程中编写了一些代码,并且没有出现任何问题。课程结束后,我把我的代码带回家并在WAMPServer上运行,由于某种原因,mysql_connect不接受一些变量作为参数。我之所以知道这一点,是因为我尝试手动将参数提供给mysql_connect,并且连接正常。此外,我回显了所有四个变量,它们都打印正常。

我是PHP新手,但这对我来说没有任何意义。

代码:

functions.php

代码语言:javascript
复制
 <?php

require ("config.php");
     function conectardb () { 
     mysql_connect ($server, $login, $pass);
     mysql_select_db ($db);
 }

?>


config.php

<?php
 $login = "root" ;
 $pass = "" ;
 $server = "localhost";
 $db = "testing";
?>

我尝试将普通参数逐个替换为它们的变量,并发现代码在这一点上是有效的:

代码语言:javascript
复制
 function conectardb () { 
     mysql_connect ($server, "root", $pass);
     mysql_select_db ("testing");
 }

如果我使用$login或$db,连接将无法工作。有什么想法吗?我都快疯了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-06 04:09:55

这是对PHP中作用域的误解。

函数存在于它们自己的作用域中。您在与函数不同的作用域中定义了$login$pass等。函数不能访问它们,也看不到它们。

你可以对此做几件事:

  1. 将数据库连接参数定义为常量,而不是将函数内的变量定义为常量(需要函数内部的配置文件将具有相同的效果)
  2. 使用global关键字将它们从全局作用域拉入函数作用域

代码语言:javascript
复制
$bar = 'hello world';
function foo() {
    global $bar;
    echo $bar;
}
票数 2
EN

Stack Overflow用户

发布于 2011-02-06 04:09:59

您的问题是变量作用域。

与大多数语言不同,php不会自动知道在函数外部定义的变量。要访问这些变量,您需要将它们指定为函数中的global $server, $pass, $db;,或者使用$_GLOBALS[]变量。

请参阅:

  • PHP Variable Scope (请参阅PHP如何管理scope)
  • $_GLOBALS (全局变量,它允许在functions)
  • define()内可见)(对于全局常量,它将在函数内可见)
票数 2
EN

Stack Overflow用户

发布于 2011-02-06 04:11:54

代码语言:javascript
复制
require ("config.php");
function conectardb () 
{ 
    global $server, $login, $pass, $db;
    mysql_connect ($server, $login, $pass);
    mysql_select_db ($db);
}

因为变量是在不同的作用域中定义的,所以这样做应该是可行的。但是,我建议传递需要值作为参数。

代码语言:javascript
复制
function conectardb ($server, $login, $pass, $db) 
{ 
    mysql_connect ($server, $login, $pass);
    mysql_select_db ($db);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4909350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档