为什么我的博客不发布?

时间:2018-04-15 03:07:37

标签: php sql database mysqli blogs

我的博客原本是张贴的,然而,当你处理事情时,事情就会破裂。现在我不能为我的生活弄清楚为什么一切都没发生!发布到数据库的类别很好,但是我的帖子拒绝了。继承人我拥有的东西

<?php
include_once('header.php');

if(isset($_POST['title'], $_POST['contents'], $_POST['category'])){
    $errors = array();
    if(!empty(trim($_POST['title']))){
        $title = trim($_POST['title']);
    }else{
        $errors[] = 'Please enter title';
    }
    if(!empty(trim($_POST['contents']))){
        $contents = trim($_POST['contents']);
    }else{
        $errors[] = 'You need to supply the content';
    }
    if(!category_id_exists($_POST['category'])){
        $errors[] = 'That category does not exist.';
    }
    if(strlen(trim($_POST['title']))>255){
        $errors[] = 'The title cannot be longer than 255 characters.'; 
    }

    if(empty($errors)){
        add_post($title, $contents, $_POST['category']);
        $id = mysqli_insert_id($mysql_connect);
        $header_string = 'Location: index.php?id='.$id;
        header($header_string);
        die();
    }

} 
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

    <style>
        label { display: block;}
    </style>

    <title>Add a Post</title>
</head>
<body>
    <h1> Add a Post </h1>
    <?php 
    if(isset($errors) && !empty($errors)){
        echo '<ul><li>', implode('</li><li>', $errors), '</li></ul>';
    }
    ?>

    <form action="" method="post">
        <div>
            <label for="title"> Title </label>
            <input type="text" name="title" value="<?php if(isset($_POST['title'])) echo $_POST['title']; ?>">
        </div>
        <div>
            <label for="contents"> Contents </label>
            <textarea name="contents" rows="15" cols="50"><?php if(isset($_POST['contents'])) echo $_POST['contents']; ?></textarea>
        </div>
        <div>
            <label for="category"> Category </label>
            <select name="category">
                <?php
                foreach(get_categories() as $category){
                    ?>
                    <option value="<?php echo $category['id']; ?>"><?php echo $category['name']; ?> </option>
                    <?php
                }
                ?>
            </select>
        </div>
        <div>
            <input type="submit" value="Add Post">
        </div>
    </form>
</body>
</html>

在header.php文件中,我调用了一个init.php连接到db文件,该文件本身也包含了我的博客的所有功能(blog.php)。具体需要的功能如下......

function add_post($title, $contents, $category){
    global $mysql_connect;

    $title = mysqli_real_escape_string($mysql_connect, $title);
    $contents = mysqli_real_escape_string($mysql_connect, $contents);
    $category = (int)$category;

    $result = mysqli_query($mysql_connect, "INSERT INTO posts SET cat_id = '$category', title = '$title', contents = '$contents', date_posted = NOW()");
}

我觉得一双新鲜的眼睛对我来说真的很有价值。当我点击添加帖子时,它会将我带到一个标题为http://localhost/blog/index.php?id=0的页面。因此,它不仅没有注册到数据库,而且也没有使用类别。

我希望我解释好了!我已经在这一周了。

编辑:我运行了错误检查,没有任何帖子,所以我不确定发生了什么!

Edit2:选择我添加的类别,也按照我希望的方式工作和列出。它只是在我点击添加帖子时发生的事情,没有任何事情发生。我假设它在这个区域

if(empty($errors)){
    add_post($title, $contents, $_POST['category']);
    $id = mysqli_insert_id($mysql_connect);
    $header_string = 'Location: index.php?id='.$id;
    header($header_string);
    die();
}

2 个答案:

答案 0 :(得分:1)

与任何问题一样,它总是在大海捞针!我通过MYSQL工作台运行代码,发现这是我设置的一个不需要关系的外键。它现在全部修好了!

SQL Error Screenshot

答案 1 :(得分:0)

我认为问题在于您的数据库表posts

一个案例是:

您需要拥有AUTO_INCREMENT字段(例如id),以便函数mysqli_insert_id完美运行。在您的情况下,解决方案是将id列设为AUTO_INCREMENT字段。

enter image description here

以下是引用:

  

mysqli_insert_id()函数返回查询生成的ID   包含具有AUTO_INCREMENT属性的列的表。如果是最后一个   查询不是INSERT或UPDATE语句,也不是修改后的表   没有具有AUTO_INCREMENT属性的列,这个   函数将返回零。