2012-06-04 2 views
2

Я использую этот синтаксис вместо count (*), потому что он должен быть быстрее, но я не знаю, как извлечь итоговый результатMySQL и php PDO как выбрать: SELECT EXISTS (SELECT 1 FROM x WHERE y =: value)

$alreadyMember = $dataBase->prepare('SELECT EXISTS (SELECT 1 
FROM TheCommunityReachLinkingTable 
WHERE communityKey = :communityKey 
AND userID = :userID)'); 
$alreadyMember->bindParam(':communityKey', $_POST['communityKey'], PDO::PARAM_STR); 
$alreadyMember->bindParam(':userID', $_POST['userID'], PDO::PARAM_INT); 
$alreadyMember->execute(); 

if($alreadyMember->fetch()) {do code here} 

Но, похоже, что-то не вернулось что-то правильное, любая идея?

+0

Неправильного синтаксиса SQL (? :) –

ответ

5

Использование EXISTS кажется неправильным здесь. Просто запустите этот запрос вместо:

SELECT 1 
FROM TheCommunityReachLinkingTable 
WHERE communityKey = :communityKey 
AND userID = :userID 
+0

Должен ли я установить LIMIT 1 в конце? –

+0

@NicolasManzini, только если вы знаете, что будут случаи, когда несколько записей возвращаются для любой комбинации 'communityKey' и' userID'. –

+0

ладно, спасибо! –

0

Правильное использование так же, как нормальные, захватить возвращаемое значение выборки)

$row = $alreadyMember->fetch(); 
print_r($row); // you may have numeric or string indices depending on the FETCH_MODE you set, pick one, consider a column alias and associative 


//or the easy way 
$alreadyMember->execute(); 
if ($alreadyMember-fetchColumn()) { 
    //column 0 contained a truthy value 
} 
Смежные вопросы