-1

这段代码用于从数据库中返回所选 $ID 的名称,

#DB Informations (username/password)
require('/path/to/db_informations.php');


# This function return the 'name of the $ID from the db
function getName($ID){
   $link = new PDO($dsn, $user, $pwd);

   $query = "SELECT `name` FROM `tables` WHERE `id`=$ID";

   $smt = $link->prepare($query);
   $smt->execute();
   $name = $smt->fetch(PDO::FETCH_ASSOC);

   return $name['name'];
}

# db_informations contain the credentials to connect the database. ($dsn, $user, $pwd)

require(/path/to/db_informations.php')即使我输入 `require();',Mmh也无法在函数内部工作 在体内发挥作用。我不明白我的错误,请您解释一下:

为什么 /path/to/file 不包含在 PHP 中?怎么做?

4

2 回答 2

1

您的数据库变量不在您的 getName() 函数的范围内。您至少需要:

function getName(...) {
   global $dsn, $user, $pwd;
   ...
}

在更大的图景中,您应该使用全局变量,也不应该在每个函数调用中创建数据库连接。在您的数据库设置文件中连接到一次数据库,然后只需将该连接重新用于脚本中的其余数据库操作。

于 2013-07-23T19:12:58.103 回答
0

这是一个可变范围问题。

$dsn, $user,$pwd是全局变量,不在getName()函数范围内定义。

解决此问题的最快方法是使用global.

function getName($ID) {
   global $dsn, $user, $pwd;
   // code...
}

但是,我不推荐使用global(它们是邪恶的)。更好的做法是在全局范围内定义您的数据库对象 (PDO) 并将其传递给您的函数/类。这称为依赖注入

于 2013-07-23T19:11:02.077 回答