我的函数无法从数据库 (PDO) 输出


My function can't output from database (PDO)

这个函数不会回显$title,当我直接把它放在索引文件中时,函数中的代码工作得很好,但是当我用它创建一个函数时,它不会回显任何东西。

我可以创建一个只回显"Hello"的功能,但这不起作用。

我已经检查了是否包含连接文件。

function title(){
    $query = $db->prepare("SELECT * FROM posts");
    $query->execute(); 
    $get = $query->fetch(); 
    $title = $get['title'];
    echo $title;
}

您正在使用未定义的变量 ( $db )。如果您没有收到错误消息,则表示您尚未将 PHP 配置为显示错误消息。这是您在进一步之前需要解决的问题;如果没有错误消息的帮助,就不可能正确编码。这里有一个简短的解释。

我建议这样做:

function title(Database $db){
}

。其中Database$db所属的类名(根据问题标签可能PDO)。

但是,请不要只是应用修复程序并继续前进:确保您收到最轻微的通知

您需要阅读以下几点:

  • 错误报告。为了确保您看到所有错误,我通常在调试时将其写在脚本的顶部(只是不要让这些到达生产站点):

error_reporting(E_ALL);
ini_set('display_errors', 1);
  • 环境。在函数中,您将无法访问该函数外部的变量,除非您使用 global 关键字专门请求此操作。

$test = "A";
function testGlobal() {
    var_dump(isset($test)); // false
    global $test;
    var_dump(isset($test)); // true
}
testGlobal();

ou 正在尝试访问函数范围之外的变量$db。

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

函数 getPageContent($page) { 全球$db;

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