Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在函数中访问$pdo_Php_Function_Pdo - Fatal编程技术网

Php 在函数中访问$pdo

Php 在函数中访问$pdo,php,function,pdo,Php,Function,Pdo,我想使用函数从数据库中选择不同的数据。不幸的是,我无法访问函数中的$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->bindPara

我想使用函数从数据库中选择不同的数据。不幸的是,我无法访问函数中的
$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放入函数中,它会像一个符咒一样工作。

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

当然不是,PHP变量不是全局的,不能用函数访问,除非用
global
关键字在内部“导入”。请参考PHP文档。但是我应该可以使用$GLOBALS['pdo']访问$pdo?或者更好,我如何将$pdo也传递给函数?使用abc($sql,$pdo)不起作用。如果它不起作用,我想您的
$pdo
var初始化不正确。它起作用了,我不知道我以前做过什么;)。将$pdo传递给函数应该是一个很好的解决方案,对吗?这里有一个规范:@billKarwin您可以添加它吗?我已经重新打开了这个问题,但我现在不能重新投票关闭。请将这一问题作为议程的副本进行表决