Kish 0 Опубликовано: 29 января 2010 Рассказать Опубликовано: 29 января 2010 В БД есть 5 записей. Выполняю запрос: SELECT COUNT(`id`) FROM `dle_orders` и оно возвращает значение 5 (посчитал количество всех записей). Как и надо. Затем делаю такой запрос: SELECT COUNT(`id`) FROM `dle_orders` WHERE (`status`) = '2' и оно возвращает значение 1 (количество запесей со статусом 2). Как и должно быть. В php же файле написано у меня следующее: $orders = $db->query("SELECT COUNT(`id`) FROM `".PREFIX."_orders`"); $ready = $db->query("SELECT COUNT(`id`) FROM `".PREFIX."_orders` WHERE (`status`) = '2'"); if($orders - $ready >= '2') { msgbox ("Oops!... I Did It Again", "Превышен лимит допустимых заказов."); } else { ... } Так вот я понять не могу, почему не выполняется условие if($orders - $ready >= '2')? По сути, результат должен быть равен 4 и должно быть сообщение, но выполняется условие из else. Помогите, пожалуйста, разобраться. Спасибо. Цитата Ссылка на сообщение Поделиться на других сайтах
kang 42 Опубликовано: 29 января 2010 Рассказать Опубликовано: 29 января 2010 (изменено) Так вот я понять не могу, почему не выполняется условие if($orders - $ready >= '2')? По сути, результат должен быть равен 4 и должно быть сообщение, но выполняется условие из else. Помогите, пожалуйста, разобраться. Спасибо. $orders = $db->query("SELECT COUNT(*) AS COUNT FROM '".PREFIX."_orders'"); $ready = $db->query("SELECT COUNT(*) AS COUNT FROM '".PREFIX."_orders' WHERE status = '2'"); if( ($orders['count'] - $ready['count']) >= 2) Попробуйте так. Изменено 29 января 2010 пользователем kangalexey Цитата Ссылка на сообщение Поделиться на других сайтах
Kish 0 Опубликовано: 29 января 2010 Рассказать Опубликовано: 29 января 2010 Автор The Error returned was: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''dle_orders'' at line 1 Error Number: 1064 О как. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 082 Опубликовано: 29 января 2010 Рассказать Опубликовано: 29 января 2010 Kish, функция $db->query возвращает не результаты запроса, а указатель на результаты, и при использовании этой функции из указателя нужно получить ассоциативный массив результатов. Если вам нужно получить сразу результаты то нужно использовать функцию $db->super_query Ну и вычитание тоже в корне неверно вы получаете не строковое значение в результатах а массив результатов, и для вычитания нужно обращаться к элементам массива Цитата Ссылка на сообщение Поделиться на других сайтах
Kish 0 Опубликовано: 30 января 2010 Рассказать Опубликовано: 30 января 2010 Автор Ну и вычитание тоже в корне неверно вы получаете не строковое значение в результатах а массив результатов, и для вычитания нужно обращаться к элементам массива Спасибо за подсказку с super_query. А как тогда нужно выполнять вычитание? Спасибо. P.S. Просто я не знаком с php и sql. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 082 Опубликовано: 30 января 2010 Рассказать Опубликовано: 30 января 2010 сделайте print_r($orders); И увидите где хранится значениеПросто я не знаком с php это плохо, готовых решений я не пишу, могу только подсказать логику Цитата Ссылка на сообщение Поделиться на других сайтах
kang 42 Опубликовано: 7 февраля 2010 Рассказать Опубликовано: 7 февраля 2010 $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_orders"; $sql_count_ = "SELECT COUNT(*) as count FROM " . PREFIX . "_orders WHERE status = '2'"; $orders = $db->super_query( $sql_count ); $ready = $db->super_query( $sql_count_ ); if(($orders['count'] - $ready['count']) >= 2) .... Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.