Php 我的功能可以';t从数据库输出(PDO)

Php 我的功能可以';t从数据库输出(PDO),php,function,pdo,Php,Function,Pdo,这个函数不会回显$title,当我把它直接放在索引文件中时,函数中的代码工作得很好,但是当我用它创建一个函数时,它不会回显任何东西 我可以让一个函数只回显“Hello”,但这不起作用 我已检查是否包含连接文件 function title(){ $query = $db->prepare("SELECT * FROM posts"); $query->execute(); $get = $query->fetch(); $title = $

这个函数不会回显$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


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

您需要了解以下几点:

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

  • 环境。在函数中,您将无法访问该函数之外的变量,除非您使用
    global
    关键字明确请求


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

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

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


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

当全局变量工作时,要注意它们很容易导致无法维护的代码。我认为没有理由跳过函数参数。@Alvaro:完全同意,我希望我的回答没有被OP误解。
error_reporting(E_ALL);
ini_set('display_errors', 1);
$test = "A";
function testGlobal() {
    var_dump(isset($test)); // false

    global $test;
    var_dump(isset($test)); // true
}

testGlobal();