PDO不在函数内工作

时间:2010-05-17 19:48:52

标签: php function pdo

我正在尝试使用PDO Prepare语句创建一个从MySQL表中提取页面内容的函数。我的代码在我定义的函数之外工作得很好,但无论我做什么它都不能在函数内工作 - 我收到以下错误:

致命错误:在第6行的/home/tappess1/public_html/pages/stations.php中调用非对象的成员函数prepare()

这是我的PHP:

function getPageContent($page) {
        $st = $db->prepare("SELECT * FROM content WHERE title LIKE ?");
        $st->execute(array($page));
        $pageContent = $st->fetch();
        $text = wordwrap($pageContent['content'], 100, "\n");
        $tabs = 4;
        $text = str_repeat(chr(9), $tabs) . str_replace(chr(10), chr(10) . str_repeat(chr(9), $tabs), $text);
        echo $text;
    }

然后

<?php getPageContent(Main);?>

我甚至尝试使用查询而不是prepare语句,只需调用getPageContent()并收到相同的错误。

谢谢!

2 个答案:

答案 0 :(得分:14)

您正在尝试访问函数scope之外的变量$db

在函数$db = new PDO....中重新初始化数据库,或者 - 在您的情况下可能更好更容易 - 导入全局变量:

function getPageContent($page) {
  global $db;

在哪里以及如何最好地存储全局数据库对象是很多讨论的主题。如果你想进入它,here是一个开始的地方(SO上也有很多其他的)。但是如果你刚刚进入PHP,我会说使用全局变量很好。

答案 1 :(得分:1)

您的函数中不知道变量$ db。