PHP PDO mysql подсчет строк возвращается - PullRequest
4 голосов
/ 22 января 2012

Есть много вопросов по этому поводу, и я провел много исследований. Однако мне все еще интересно, правильно ли я это делаю.

Вот мое утверждение (я упростил его):

    try {
        $stmt = $pdc_db->prepare("SELECT * FROM table WHERE color = :color"); 
        $stmt->bindValue(':color', $selected_color);
        $stmt->execute(); 
        $color_query = $stmt->fetchAll();
    } catch(PDOException $e) { catchMySQLerror($e->getMessage()); } 

Теперь я использую следующее, чтобы увидеть, принесло ли это какие-либо результаты:

if (count($color_query) > 0) {

Это работает, ОДНАКО ... оператор SELECT вернет только один результат. Так что теперь, чтобы получить доступ к материалам в результатах, я использую $ color_query [0] [colorname]. Я знаю, что это потому, что я использую fetchAll (), но я действительно хочу использовать fetch ()

Но если я просто использую fetch (), я теряю способность делать count (), что для меня довольно просто. Я знаю, что могу сделать отдельный запрос и проверить результаты SELECT COUNT (*), но это кажется дополнительной работой (настройка двух отдельных запросов для каждого)

Должен быть способ, использующий PDO в PHP с mySQL, проверить, вернул ли fetch () результат?

Ответы [ 2 ]

4 голосов
/ 22 января 2012

$ stmt-> rowCount () после execute (), но не работает со всеми базами данных ... попробуйте это с MySQL и посмотрите, что вы получите.

0 голосов
/ 22 января 2012

Вы можете сделать это с помощью fecth, fecth вернет false, если результаты не вернутся.

if ($row = $stmt->fetch()) {
     //get the first row of the result.
     //....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...