gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:13:08 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com