php Mysql错误未知的id

时间:2015-10-17 12:24:04

标签: php mysql error-handling

我正在尝试用PHP / MySQL创建一个博客,并且有两个表

  • 帖子(id int(6),cat_id int(3),title varchar(255),contents text)

  • 类别(cat_id int(11),name varchar(24))。

当我尝试运行编辑功能时,我收到错误 - 'where子句'中的'未知列'id'。

<?php
include_once('resources/init.php');

$post=get_posts($_GET['id']); 
if(isset($_POST['title'],$_POST['contents'],$_POST['category']))
{
    $title=trim($_POST['title']);   
    $contents=trim($_POST['contents']); 

    edit_post($_GET['id'],$title,$contents,$_POST['category']);

    header("Location:index.php?id=$post[0]['posts.id']");
    die();
}
?> 

这是编辑功能 -

function edit_post($id,$title,$contents,$category)
{
    $id=(int)$id;
    $title=mysql_real_escape_string($title);
    $category=(int)$category;

    $contents=mysql_real_escape_string($contents);

    mysql_query("UPDATE posts SET cat_id=  {$category},
                                  title='{$title}',
                                  contents='{$contents}' 
                  WHERE id={$id}");
}

您可能需要参考get_posts函数 -

function get_posts($id=null,$cat_id=null){
    $posts=array();
    $query=("SELECT posts.id AS post_id, categories.cat_id AS category_id,  
                    title, contents, 
                    categories.name AS name
             FROM posts 
                INNER JOIN categories ON categories.cat_id = posts.cat_id");

    if (isset($id)) {
        $id=(int)$id;
        $query .= " WHERE posts.id={$id}";
    }
    if(isset($cat_id)) {
        $cat_id=(int)$cat_id;
        $query .=" WHERE categories.cat_id={$cat_id}";  
    }
    $query .= " ORDER BY posts.id DESC";
    $query = mysql_query($query);
    while($row=mysql_fetch_assoc($query)) {
        $posts[]=$row;  
    }
    return $posts;
}

我在网站上提到了针对此类错误提供的解决方案,但对我的案例没有帮助。请帮忙。

2 个答案:

答案 0 :(得分:0)

你不应该直接运行你的第一个脚本,它应该使用带有id输入的表单提交来运行。

答案 1 :(得分:0)

检查您的网址中是否设置了ID,请尝试此方法

include_once('resources/init.php');

if(isset($_GET['id'],$_POST['title'],$_POST['contents'],$_POST['category']))
{
    $post=get_posts($_GET['id']); 
    $title=trim($_POST['title']);   
    $contents=trim($_POST['contents']); 

    edit_post($_GET['id'],$title,$contents,$_POST['category']);

    $id = $post[0]['posts.id'];
    echo $id;
    header("Location:index.php?id=".$id);
    die();
}