php语法 - 为什么让我的代码成为一个函数阻止它工作?

时间:2013-11-13 11:21:06

标签: php

可能很简单,请原谅。

在我的页面顶部,我添加了一个文件:

<?
    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();
}

找不到db详细信息。请有人解释一下原因吗?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

看看variables scope在PHP中是如何工作的。

答案 2 :(得分:0)

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

function doAQuery($query){