0

配列からすべての登録済みプレーヤーのリストを取得したい

ここに私の機能があります

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;
            }
4

1 に答える 1

0

配列/リストを解析し、配列/リスト内の各IDに対して選択を実行する方が理にかなっていると思います。

擬似コード:

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

しかし、それは基本的な方法であり、より高度な方法で実行できるかどうかはわかりません。

于 2013-05-21T11:50:54.327 に答える