我正在尝试用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;
}
我在网站上提到了针对此类错误提供的解决方案,但对我的案例没有帮助。请帮忙。
答案 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();
}