这是创建帖子流的有效方式,还是有更好的方法?

时间:2013-03-07 19:15:02

标签: php mysql sql pdo while-loop

$FSQL = $pdo->query('SELECT * FROM `connections` WHERE `uid`="'.$my_id.'" && `type`="1" ORDER by `id` DESC');
$myfriends = '`uid`="'.$my_id.'" ';
while($po = $FSQL->fetch(PDO::FETCH_ASSOC)){
    $myfriends .= ' || `uid`="'.$po['cid'].'"';
}

$dsk = $pdo->query("SELECT * FROM `posts` WHERE ".$myfriends." ORDER by `id` DESC LIMIT ".$limitCount);

我一直在尝试创建一个不错的帖子流,最后我的代码被删除了。但是如果你有大量的连接(连接是来自朋友,页面或事件的任何东西),它似乎效率很低。

有人能告诉我是否有更好的方法吗?

- 顺便说一句:这已经完全正常,但我觉得我会遇到问题

2 个答案:

答案 0 :(得分:0)

$FSQL = $pdo->query('SELECT * FROM {连接{1}} {UID {1}}输入WHERE ID为="'.$my_id.'" &&

这很容易被SQL Injection攻击。您应该使用参数和预准备语句。请参阅Documentation

工作示例

="1" ORDER by

答案 1 :(得分:0)

您不想使用子查询? 像这样......

$dsk = $pdo->query(
    "SELECT *
       FROM `posts` 
      WHERE uid IN (
            SELECT cid
              FROM `connections` 
             WHERE `uid`="'.$my_id.'" && `type`="1"
          ) 
      ORDER BY `id` DESC LIMIT " . $limitCount);

当您不需要所有字段时,尽量不要使用*