PDO不在函数内工作

Nig*_*ICU 5 php pdo function

我正在尝试使用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;
    }
Run Code Online (Sandbox Code Playgroud)

然后

<?php getPageContent(Main);?>
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Pek*_*ica 14

您正在尝试访问$db超出函数范围的变量.

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

function getPageContent($page) {
  global $db;
Run Code Online (Sandbox Code Playgroud)

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