5

遇到几个错误,我一辈子都看不到我跌倒的地方。下面是函数文件

<?php
include('config.php');

function getAllPosts()
{
    try {
        $dbh = new PDO(DB_HOST, DB_USER, DB_PASS);
    } catch (PDOException $e) {
        echo $e->getMessage();
    }

    $stmt = $dbh->prepare('SELECT id, title, content FROM posts ORDER BY created_at DESC');
    $stmt->execute();
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
    return $results;
}

function getSinglePost($id)
{
    try {
        $dbh = new PDO(DB_HOST, DB_USER, DB_PASS);
    } catch (PDOException $e) {
        echo $e->getMessage();
    }
    $stmt = $dbh->prepare('SELECT title, content FROM posts WHERE id = ?');
    $bindings = array($id);
    $stmt->execute($bindings);
    $result = $stmt->fetch(PDO::FETCH_ASSOC);
    return $result;
}

?>

还想我应该包含我正在运行的页面以生成错误

<?php include('system/functions.php'); ?>
<html>
<head>
<title>Create A New Post | My First Blog</title>

<link rel="stylesheet" type="text/css" href="style.css">

</head>

<body>
<div id="form">
<?php if (isset($_GET['id'])){ ?>

<h2>Single Post:</h2>

<?php $post = getSinglePost($_GET['id']); ?>
<?php print_r($post); ?>

<?php } ?>
<fieldset>
</fieldset>
</div>

</body>
</html>

任何帮助都非常感谢这些都是错误的。

注意:使用未定义的常量 DB_HOST - 在第 31 行的 C:\xampp\htdocs\blog\system\functions.php 中假定为“DB_HOST”

注意:使用未定义的常量 DB_USER - 在第 31 行的 C:\xampp\htdocs\blog\system\functions.php 中假定为“DB_USER”

注意:使用未定义的常量 DB_PASS - 在 C:\xampp\htdocs\blog\system\functions.php 中的第 31 行无效数据源名称中假定为“DB_PASS” 注意:未定义变量:C:\xampp\htdocs\blog\ 中的 dbh第 37 行的 system\functions.php

致命错误:第 37 行 C:\xampp\htdocs\blog\system\functions.php 中的非对象调用成员函数 prepare()

也应该包含配置文件

<?php
define('DB_HOST','mysql:host=localhost;dbname=blog');
define('DB_USER','root');
define('DB_PASS','');
?>
4

3 回答 3

4

您正在使用的常量,Host尚未定义。你的可能有问题。UserPasswordconfig.php

于 2013-01-25T13:43:32.097 回答
3

这意味着在当前上下文中DB_HOST未定义或DB_HOST不可访问。

尝试将这些变量放在脚本的开头而不是include('config.php');

define('DB_HOST','mysql:host=localhost;dbname=blog');
define('DB_USER','root');
define('DB_PASS','');
于 2013-01-25T13:51:44.957 回答
1

使用特定术语代替参考...

例如

$dbh = new PDO(DB_HOST, DB_USER, DB_PASS);

改成...

$dbh = new PDO('localhost', 'root', '')

那会奏效。

于 2017-02-18T19:26:53.390 回答