选择列表中提供ID的行

时间:2013-05-21 11:40:22

标签: php pdo

我想从阵列中获取已注册玩家的所有列表

这是我的功能

function UpdateContact() 
    {
        try {
            $conn = $this->GetDBConnection();

            $linkedInId = trim($_REQUEST['linkedInId']);

            $statement = $conn->prepare('UPDATE users SET linkedInId = :linkedInId WHERE linkedInId = :linkedInId');
            $statement->bindParam(':linkedInId', $linkedInId, PDO::PARAM_STR);
            $statement->execute();

            //$updatedTime = time() - 120;
            $ids = implode(",",$_POST['ids']);
// $ids = (abc,def,geh,ijk,lac);

            $statement = $conn->prepare('SELECT * FROM users WHERE linkedInId IN (:ids)');
            $statement->execute($ids);
            $conn = null;

            if (!($row = $statement->fetchAll(PDO::FETCH_ASSOC))) 
                return false;
            else
                return $row;    

            } catch(PDOException $e) {
            throw $e;
        }       
    }

只返回false

也许是因为我无法使用PDO语句绑定数组?

如何修复此解决方案,我可能希望稍后添加更多绑定参数,因此我也不想执行execute($ids)

我也试过了bindParam(':ids',$ids)但是无济于事

$items = array();
            //$statement->bindParam(':updatedTime', $updatedTime, PDO::PARAM_STR);

            foreach ($id as $ids)
            {
                $statement = $conn->prepare('SELECT * FROM users WHERE id = :id');
                $statement->bindParam(':id', $id, PDO::PARAM_STR);
                $statement->execute();
                if(($row = $statement->fetch(PDO::FETCH_OBJ))) 
                    $items[] = $id;
            }

1 个答案:

答案 0 :(得分:0)

我认为解析数组/列表并对数组/列表中的每个id执行select会更有意义。

伪代码:

init resultArray;
For x in List
    select * from database where ids =: x
    if result
        add result to resultArray
return resultArray

但这只是基本的做法,我不确定你是否可以做得更先进。