За последние 24 часа нас посетили 22382 программиста и 1149 роботов. Сейчас ищут 714 программистов ...

проверить на возвращаемое значение из запроса

Тема в разделе "PHP для новичков", создана пользователем l_2001, 17 янв 2022.

  1. l_2001

    l_2001 Активный пользователь

    С нами с:
    9 дек 2014
    Сообщения:
    59
    Симпатии:
    2
    Здравствуйте! Есть примитивный sql запрос:
    Код (Text):
    1. $sq = sql_query($conncxp, "select Ctrls, DeleteFlag from Scrooge.Clients where Ctrls = '$clid'");
    2.             $cnt = count($sq);
    3.             while ($q = sql_fetch_assoc($sq)) {
    4.                 if (array($q)) {
    5.                     $ctrls = $q['Ctrls'];
    6.                     $del   = $q['DeleteFlag'];
    7.                     echo $txt3 . " " . $nn . " " . $clid . " " . $fio . " " . $fior . " Ctrls = " . $ctrls . " Del = " . $del . "\n";
    8.                 } else {
    9.                     echo $txt3 . " " . $nn . " " . $clid . " " . $fio . " " . $fior . "\n";
    10.                 }
    11. }
    Если запрос возвращает результат, то понятно $q будет массивом, этот кусок срабатывает, а вот дальше - ступор! Подскажите, как отловить то, что запрос ничего не возвращает? Пробовал и isset, пробовал и empty - никак не выводит того что в последнем эхе... Спасибо!
     
  2. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
  3. l_2001

    l_2001 Активный пользователь

    С нами с:
    9 дек 2014
    Сообщения:
    59
    Симпатии:
    2
    Не, такое не проходит... PDO скрипты написаны на уровне сервера и никто под меня "рихтовать" ничего не станет... num_rows стабильно возвращает мне "-100" при любом запросе... Я пока выкрутился count(*), т.е. два запроса, первый count(*) и, если больше или равно единичке, то второй запрос, а если нолик, то остальное, но это же дебильно!
     
  4. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Тогда вместо echo добавляйте в массив.
     
  5. l_2001

    l_2001 Активный пользователь

    С нами с:
    9 дек 2014
    Сообщения:
    59
    Симпатии:
    2
    А что добавлять в массив, если его нет? Ни null, ни значения... Что добавлять?
     
  6. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Для начала его нужно объявить.
    А в конце проверить - есть что, и сколько.
    Можно и не объявлять, тогда само его существование будет означать, что в нем что-то есть.
     
  7. l_2001

    l_2001 Активный пользователь

    С нами с:
    9 дек 2014
    Сообщения:
    59
    Симпатии:
    2
    Ммм... Действительно, как вариант! Завтра попробую... А кроме - есть идеи?
     
  8. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Если вам доступна только выдача, то больше ничего и нет.
    Как вариант, можно присоединить к запросу переменную с количеством строк.
     
  9. l_2001

    l_2001 Активный пользователь

    С нами с:
    9 дек 2014
    Сообщения:
    59
    Симпатии:
    2
    По любому - объявлять надо в начале! А потом смотреть... Ок! Попробую! Благо, что на "выхлопе" результат почти единичный, можно обойтись и count(*), но не факт, что потом не нагрузят кило-записями :)
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    SQLite юзаешь ?
     
  11. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @l_2001, вот самое простое:
    PHP:
    1. if ($q = sql_fetch_assoc($sq)) {
    2.     do {
    3.         echo "данные";
    4.     } while ($q = sql_fetch_assoc($sq));
    5.     echo 'закрывашка';
    6. }
     
  12. l_2001

    l_2001 Активный пользователь

    С нами с:
    9 дек 2014
    Сообщения:
    59
    Симпатии:
    2
    Спасибо! Можно считать, что тема закрыта!
    --- Добавлено ---
    Не... Сервер на ASE... SQL только для собственных нужд :)