大家好我在尝试发布到我的数据库时遇到这两个错误
注意:未定义的变量:第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);
这是第二个
致命错误:在第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基础课程。义务博客:第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
}
答案 0 :(得分:0)
Jo应首先创建数据库连接。并将其存储在$conn
中。
第二个错误与第一个错误有关。由于没有连接,$conn
为NULL
,因此没有成员函数。任何
至于你的代码:
<?php
require '../functions.php';
require '../db.php';
$data = array();
$conn = Blog\DB\connect($config); //this does not work actually. but mainly the connection was missing.
if ( $_SERVER['REQUEST_METHOD'] === 'POST' ) {
...
答案 1 :(得分:0)
$conn
似乎不是数据库实例。
确保$conn
实际上与数据库保持连接。您可以使用
var_dump($conn)