私は PDO の初心者ですが、データベースのテーブルの最初の行しか選択できない理由がわかりません。
これは私のデータベース TABLE です:
Column Type Null Default Comments
id int(11) No
cred varchar(20) No
tok char(40) No
ptok char(40) No
t char(128) No
expires varchar(26) No
Indexes
Keyname Type Unique Packed Column Cardinality Collation Null Comment
PRIMARY BTREE Yes No id 1 A No
ptok BTREE Yes No ptok 1 A No
そして、これは私の SELECT (検索) 関数です:
public function findTriplet($credential,$token, $persistentToken) {
$sql = "SELECT IF(SHA1(?) = {$this->tokenColumn}, 1, -1) AS token_match " .
"FROM {$this->tableName} WHERE {$this->credentialColumn} = ? " .
"AND {$this->persistentTokenColumn} = SHA1(?) LIMIT 1 ";
$query = $this->connection->prepare($sql);
$query->execute(array($token, $credential, $persistentToken));
$result = $query->fetchColumn();
if(!$result) {
return self::TRIPLET_NOT_FOUND;
}
elseif ($result == 1) {
return self::TRIPLET_FOUND;
}
else {
return self::TRIPLET_INVALID;
}
}
とにかく答えを探してみましたが、PDOがそれほど優れていることを知らないので、問題ではありません..
私はそれで遊んでみましたが、成功しませんでした..findTriplet関数の私の問題と私が間違っていることを知っている人はいますか? 最初のデータベース行のみが選択されるため、複数の行がある場合は false が返されます。
ありがとうございます。