-6

可能是一个简单的,所以请原谅我。

在我的页面顶部,我包含一个文件:

<?
    require("common.php");
    ?>

稍后在我的代码中,我执行以下操作:

  $stmt = $db->prepare($query);
  $result = $stmt->execute();
  $result = $stmt->fetchAll();

(数据库连接文件在我的包含文件中)。

这工作正常,直到我尝试使代码成为函数例如:如果我这样做

    function doAQuery(){
 $stmt = $db->prepare($query);
                    $result = $stmt->execute();
                    $result = $stmt->fetchAll();
}

它找不到数据库详细信息。请问有人可以解释为什么吗?

4

3 回答 3

2

这不是语法问题。您的$db$query变量不适用于您的函数范围。您可以通过将它们声明global $db, $query为函数的第一行来使它们可用。

于 2013-11-13T11:23:13.230 回答
2

这是因为$db是一个全局变量。PHP 在函数范围内忽略它,除非您明确声明应该使用它。

function doAQuery() {
    global $db;
    $stmt = $db->prepare($query);
    $result = $stmt->execute();
    $result = $stmt->fetchAll();
}

看看变量作用域在 PHP 中是如何工作的。

于 2013-11-13T11:24:49.083 回答
0

将查询字符串传递给函数,

function doAQuery($query){
于 2013-11-13T11:24:12.590 回答