我的sql表如下所示
posts-> id postedby timestamp
1 1 12716826
comments-> id postid comby tstamp condition
1 1 1 12716826 me
2 1 1 12716826 all
1 1 2 12716826 me
1 1 3 12716826 all我的问题是,当我提出一个查询来获取post 1的所有评论时。我想要以下条件
带有条件me的评论应该只对我或帖子所有者可见。
我做了一个类似于$myid=2;$postbyid=1的查询;
$res=$db->query("SELECT * from comments where postid='$postbyid'
order by tstamp desc");
while ($row=$res->fetch_assoc())
{
if($row['comby']==$uid || $row['comby']=='$postbyid')
{
$data[]=$row;
}
else
{
if($row['condition']!='me')
{
$data[]=$row;
}
}
}这可能是错的。有使用SQL CASE的方法吗?
喜欢
SELECT * from comments where postid='$postbyid' CASE WHEN comby='$myid'
THEN SHOW ALL WHEN combyid='$postbyid' THEN SHOW ALL else dont
show this row order by tstamp desc发布于 2013-11-06 07:23:52
您只需调整查询条件:
SELECT *
FROM comments
WHERE postid = '$postbyid'
AND comby IN ('$myid', '$postbyid')
ORDER BY tstamp DESC我没有从condition字段中得到您想要的内容,但是从该查询中您可以添加另一个AND条件来满足可见性限制。
请注意,您的代码容易受到SQL注入攻击,似乎您正在使用mysqli模块处理数据库,因此请看mysqli手册的准备语句部分:http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php
祝好运!
https://stackoverflow.com/questions/19805541
复制相似问题