关于php:PDO在函数内不起作用

PDO not working within function

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

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

这是我的PHP:

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

然后

1
<?php getPageContent(Main);?>

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

谢谢!


您试图访问超出您的函数范围的变量$db

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

1
2
function getPageContent($page) {
  global $db;

全局数据库对象的最佳存储位置和最佳存储方法是许多讨论的主题。如果你想进入其中,这里是一个开始的地方(还有很多其他地方也在那里)。但是,如果你只是在学习PHP,我会说使用全局变量是很好的。


函数中的变量$db未知。