2017-01-20 54 views
0

我有两个表:获得来自特定类别的所有职位与灵活的代码

表邮编:

id    cateid   content 
    ####    ######  ############### 
    14    35   Lorem isplum 

分类表:

id    name 
    ####   ######### 
    35    Sport 

我通常使用的方法来获取所有职位类别如下:

$itemSport = array(); 
$itemSport = getAllPostFromSportCate(35); 

35是表的值。

问题是:

  1. 当我从Category表中删除值35。 我不能getAllPostFromSportCate($id)因为Category表不存在这个值。

  2. 我不希望插入值如35功能getAllPostFromSportCate($id)。 如果用户更改idCategory表。所有的逻辑都会失败。

问题2:

我不希望像35传递值。

正常,我收到用户点击按钮时的值。

像:

select * from Post where cateid = (select id from Category) 

select * from Post where cateid = $_POST('idCate') 
+0

可以更清晰地说明问题了吗? –

+0

第一个问题:在尝试从SQL中查找数据之前,检查是否存在'$ id'。 第二个问题:正如Nishant所说,请更清楚解释。我不明白你的问题是什么.. – Twinfriends

+0

使用'级联删除,更新'mysql的概念。 –

回答

1

它看起来像你的问题包含答案(当然,种):

select * from Post where cateid = $_POST('idCate') 

您将建立其列出类别一种形式,这种形式可以只使用类别的ID作为输入值。然后,为他们显示的文本将是类别名称。

但是,你需要确保你正确转义形式值执行数据库查询之前,以防止SQL injection

+0

如果我想得到一个数组包含列表'cateid = 35'的Post。在我的问题中,我试图用用户界面交互的例子,比如选择一个'combobox'或点击保存按钮(点击后包含值的事件)。我的情况不是这样的。 – vanloc

+0

@vanloc所以你根据类别名选择? – aross

1

显然,你不能得到所有从他们的ID已被删除一个类别的职位,但你可以检查CATEGORY_ID,如果它存在,那么得到的所有在它下面的帖子。我想知道,为什么用户会改变一个类别的ID?

0

不要让任何人删除类别。让用户只更改它。

$a_categories = array(1, 3, 4, 5, 9, ...); // get the existing ids from the database 

if($i_category AND in_array($i_category, $a_categories)){ 
// your change of category code here 
// mysqli_query($link, "UPDATE posts SET cateid = ".$i_category." WHERE id = ".$i_postnumber); 
} 

没有帖子都将丢失,然后

相关问题