2014-12-31 2 views
-1

Я бегу следующую команду SQL PDO в странице сервера Apache PHP:SQL, PDO, и PHP - Комнаты ROWCOUNT() функция

$query = " 
    SELECT 
     id, 
     building_name 
    FROM 
     campus 
"; 

$stmt = $con->prepare($query); 
$stmt->execute(); 
$num = $stmt->rowCount();   // HERE IS THE FUNCTION 

Вместо возвращения всего количества строк Я хотел бы rowCount() функция возвращает только число строк, где «building_name» = «IT House». Я не могу найти какую-либо информацию об этой функции, например, какие аргументы она ожидает и т. Д. Любая идея, как я могу изменить вызов функции в операции присваивания? Заранее спасибо!

ПРИМЕЧАНИЕ: Я знаю, что могу задать запрос с помощью команды SELECT, но я не хочу ограничивать свой запрос там. Мне нужен запрос для представления всех строк, но мне нужен rowCount, чтобы представлять только нужные строки.

+1

Если вы хотите перекличку подмножество строк, но запрос возвращает полный набор строк, тогда вам понадобятся два запроса. – halfer

+0

@halfer Мне нравится эта идея. Могу ли я запустить два отдельных запроса на одном сеансе PDO? Я сейчас не на своей рабочей станции, чтобы попробовать. Кроме того, если это возможно, это плохая практика? Благодарю. – Jim22150

+1

Да, используйте столько, сколько вам нужно. Я бы предположил, что страница, подобная той, которую мы сейчас используем, в Stack Overflow, возможно, использует 10 или 20 для рендеринга. Одной из интересных особенностей разделения данных таким образом является то, что, хотя вы можете делать много в одном сложном запросе, иногда быстрее использовать несколько более простых запросов, даже принимая во внимание многочисленные сетевые поездки на сервер базы данных. – halfer

ответ

2

вы можете найти документацию для ROWCOUNT здесь: http://php.net/manual/en/pdostatement.rowcount.php

есть ли что-то еще, что вы делаете с тем результатом, что исключает вас от только выбирающих строк с этим условием ?:

SELECT id, building_name FROM campus WHERE building_name = 'IT House' 

еще лучше, вы можете просто выбрать количество:

SELECT COUNT(*) FROM campus WHERE building_name = 'IT House' 

В противном случае вы должны перебрать результаты, чтобы определить количество строк, которые удовлетворяют ваше состояние:

$stmt->execute(); 
$result = $stmt->fetchAll(); 
$num = 0; 
foreach($result as $row) { 
    if('IT House' == $row['building_name']) { 
    $num++; 
    } 
} 
+0

Да, другая вещь, которую я делаю, которая требует, чтобы все строки записывали/обновляли в файл JSON, который хранит все строки для использования в интерфейсе. Но внутренний или этот скрипт также используется для редактирования строк определенного имени здания; это параметр, полученный из запроса GET из веб-формы. Я пока не понял лучший способ или место для обновления моего файла JSON до сих пор, но пока это работает. – Jim22150

1

Если вы не хотите, чтобы добавить условие к оператору SQL, вам нужно будет перебирать все результаты, а затем увеличивает счетчик, основанный на действительно ли building_name равен IT House или не

+0

Это то, чего я пытаюсь избежать для простоты. Нет аргументов или условий, которые я могу написать в PHP для фильтрации задания? – Jim22150

Смежные вопросы