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

标签 php mysql wamp

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

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

代码:

函数.php

 <?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";
?>

我已经尝试用它们的变量一个一个地替换普通参数,并发现代码在这一点之前是有效的:

 function conectardb () { 
     mysql_connect ($server, "root", $pass);
     mysql_select_db ("testing");
 }

如果我使用 $login 或 $db,连接将无法工作。有任何想法吗?这让我发疯。

最佳答案

这是对 PHP 范围的误解。

函数存在于它们自己的范围内。您在与函数不同的范围内定义了 $login$pass 等。该函数无法访问它们,也看不到它们。

你可以为此做几件事:

  1. 将数据库连接参数定义为常量而不是变量
  2. 定义函数内的变量(需要函数内的配置文件才能起到同样的作用)
  3. 使用global关键字将它们从全局作用域拉入函数作用域

$bar = 'hello world';
function foo() {
    global $bar;
    echo $bar;
}

关于php - mysql_connect 和 mysql_selectdb 没有将一些变量作为参数的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4909350/

相关文章:

javascript - 遍历每个元素并只获取直接在节点中的内容

PHP/SQL : Using only one query, 如果数据在两个表中,则从两个表中选择行,否则从一个表中选择

php - MySQL RAND() 不工作,总是得到相同的结果

mysql - c 上的 const char 具有相同的变量但不同的值

mysql - 更改 my.ini 文件上的 datadir 在 WAMP 中不受尊重

php - 如何使用 PHP 在 facebook 应用程序 Canvas 中实现 paypal?

php - 根据数据库显示同一页面不同内容

mysql得到完全连接的相反结果

mysql - 局域网内远程连接MYSQL(WAMP)数据库

WAMP 无法正常工作