【问题标题】:access to $pdo in function在函数中访问 $pdo
【发布时间】:2020-05-24 12:14:51
【问题描述】:

我想使用一个函数从我的数据库中选择不同的数据。不幸的是,我无法在函数中访问$pdo。这是更好理解的代码:

config.php

...
$pdo = new PDO("mysql:host=$host;dbname=$database", $user, $password);

select.php

include 'config.php';

function abc($sql) {
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':name', $name);
    $stmt->execute();
}

$sql = "SELECT a FROM table WHERE b = :name";
abc($sql);

$sql = "SELECT a FROM table WHERE c = :name";
abc($sql);

错误:

在 null 上调用成员函数 prepare()

如果我将 config.php 放入函数中,它就像一个魅力。

【问题讨论】:

标签: php function pdo


【解决方案1】:

您可以将$pdo 声明为全局,或将其作为第二个参数传递给abc。这有什么问题?

【讨论】:

  • 当然不是,PHP var 不是全局变量,不能通过函数访问,除非在内部使用 global 关键字“导入”。请参考 PHP 文档。
  • 但是我应该可以使用 $GLOBALS['pdo'] 访问 $pdo?
  • 或者更好的是,我怎样才能将 $pdo 也传递给函数?使用 abc($sql, $pdo) 不起作用。
  • 如果它不起作用,我猜你$pdo var 没有正确初始化。
  • 它成功了,我不知道我以前做过什么;)。将 $pdo 传递给函数应该是一个很好的解决方案,对吧?
猜你喜欢
  • 1970-01-01
  • 2023-03-24
  • 2014-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
相关资源
最近更新 更多