php - 通知: Undefined variable: conn and Fatal error: Call to a member function prepare() on a non-object

标签 php mysql variables undefined fatal-error

大家好,我在尝试发布到数据库时遇到这两个错误

注意: undefined variable :第 17 行 C:\xampp\htdocs\phptuts\sandbox\blog\admin\index.php 中的 conn

这是代码;

    > <?php 
    require '../functions.php';
    require '../db.php';
    $data = array();


    if ( $_SERVER['REQUEST_METHOD'] === 'POST' )  {
        $title = $_POST['title'];
        $body = $_POST['body'];

        if ( empty($title) || empty($body) ) {
            $data['status'] = 'Please fill out both inputs';
        } else {
            Blog\DB\query(
                "INSERT INTO posts(title, body) VALUES(:title, :body)",
                array('title' => $title, 'body' => $body), 
                $conn); // line 17
        }
    }

view('admin/create', $data);

这是第二个

fatal error :在第 26 行对 C:\xampp\htdocs\phptuts\sandbox\blog\db.php 中的非对象调用成员函数prepare()

function query($query, $bindings, $conn)
{
    $stmt = $conn->prepare($query); //line 26
    return $stmt->execute($bindings);

}

希望有人能帮助我解决这个问题,因为我正在 tutsplus 上学习 php 基础类(class) The Obligatory Blog:第 4 部分在这里找到 https://tutsplus.com/lesson/the-obligatory-blog-part-4/

这里更新的是db.php文件

<?php namespace Blog\DB;  

$config = array(
    'username' => 'root', 
    'password' => 'foobar',
    'database' => 'blog'
);

function connect($config)
{
    try {
        $conn = new \PDO('mysql:host=localhost;dbname=' . $config['database'],
                    $config['username'],
                    $config['password']);
        $conn->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

        return $conn;
    } catch (Exception $e) {
        return false;
    }
}

function query($query, $bindings, $conn)
{
    $stmt = $conn->prepare($query);
    $stmt->execute($bindings);

    return ($stmt->rowCount() > 0) ? $stmt : false;

}

function get($tableName, $conn, $limit = 10)
{
    try {
        $result = $conn->query("SELECT * FROM $tableName ORDER BY id DESC LIMIT $limit");

        return ( $result->rowCount() > 0 )
            ? $result
            : false;
    } catch(Exception $e) {
        return false;
    }
}


function get_by_id($id, $conn)
{
    $query = query(
        'SELECT * FROM posts WHERE id = :id LIMIT 1',
        array('id' => $id),
        $conn
    );

    if ( $query ) return $query->fetchAll();
    // else
}

最佳答案

看来$conn不是数据库实例。

确保$conn确实拥有与数据库的连接。您可以通过以下方式检查:

var_dump($conn)

关于php - 通知: Undefined variable: conn and Fatal error: Call to a member function prepare() on a non-object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18499952/

相关文章:

php - 我需要在 MYSQL 查询中的什么地方使用反引号或引号?

Linux 环境变量已定义但未反射(reflect)值

php - 如何反序列化数组并为每个数据插入查询?

php - 从类中调用和执行函数

php - 当文件大小大于 2mb 时,Laravel 文件上传失败

mysql - SQL 选择查询(扩展)

php - 从数千名可能有数百张彩票的用户中选择抽奖彩票获奖者

PHP+MySQL : Problem with Update query

c# - 为什么使用 var 而不是类名?

javascript - 你能在 javascript 中使用 type 与使用 var 来声明变量吗?什么时候它是更好的选择?