Обновление 2015
Мой первоначальный ответ ниже не идеален, так как ветка вверх по течению не обязательно является веткой, к которой вы нажимаете.
С Git 2.5+ правильная команда:
git for-each-ref --format="%(refname:short) %(upstream:track)" refs/heads
Подробнее см. « Просмотр Unpushed Git Commits
g0] ".
(как указано void.pointer в , комментарии , upstream:track
точнее, чем push:track
, в зависимости от политика push по умолчанию )
Git 2.13 (Q2 2017) использует более общий API фильтра ref-фильтра с более полным git for-each-ref push
:
См. commit 3d9e4ce , commit 949af06 , commit 56b4360 , commit 6eac70f , совершить 1a34728 , совершить 1a0ca5e , совершить 3a42980 , совершить 17938f1 , совершить 3ba308c , совершить a798410 , commit b180e6f , совершить 01f9582 , совершить 7743fcc , commit ffd921d , совершить 99c6a71 , совершить d4919bb , совершить 42d0eb0 , совершить 4f3e3b3 , совершить c58fc85 (10 Январь 2017 года) Karthik Nayak (KarthikNayak
) . (Слияние с Junio C Hamano - gitster
- в совершить 93e8cd8 , 27 февраля 2017 г.)
push:
Название локального ref, который представляет местоположение
@{push}
для отображаемого ref. Соответствует параметрам:short
,:lstrip
,:rstrip
,:track
и:trackshort
в качествеupstream
. Производит пустую строку, если не настроено ref@{push}
ref.Если добавлено
lstrip=
(rstrip=
), разделитекомпоненты с разделяемым косой чертой с фронта (назад) (например,
%(refname:lstrip=2)
поворачиваетrefs/tags/foo
наfoo
, а%(refname:rstrip=2)
поворачиваетrefs/tags/foo
наrefs
).Если
blockquote>- отрицательное число, разделите столько компонентов пути, сколько необходимо от указанного конца для выхода
-
компонентов пути (например,%(refname:lstrip=-2)
поворачиваетrefs/tags/foo
вtags/foo
, а%(refname:rstrip=-1)
поворачиваетrefs/tags/foo
наrefs
)Оригинальный ответ (2014)
Другой вариант будет доступен с Git 1.9 / 2/0 (Q1 2014). См. commit b28061c из Рамкумар Рамачандра (artagnon) :
for-each-ref
: ввести%(upstream:track[short])
Представить :
%(upstream:track)
отобразить «[ahead M, behind N]
» и%(upstream:trackshort)
для отображения «=
», «>
», «<
"или"<>
"соответственно (вдохновленcontrib/completion/git-prompt.sh
).Теперь вы можете использовать следующий формат для каждого из ссылок:
blockquote>%(refname:short) %(upstream:trackshort)
для отображения ссылок с краткими данными отслеживания.
Обратите внимание, что
blockquote>:track
и:trackshort
работают только с "upstream
" и ошибка при использовании с чем-либо еще.
Так что, если я вас правильно понимаю, вам просто нужно написать что-то, чтобы объединить фрагменты оператора OR на основе битового массива. Вместо добавления ИЛИ для каждой записи, независимо от того, отмечена она или нет, сделайте что-то вроде
first = true
string orClause = ""
array schoolTypes
array checkedSchoolTypes
for(i = 0; i < checkedSchoolTypes.length; i++)
if(first && checkedSchoolTypes[i])
orClause += "schools.schoolType = " + schoolTypes[i]
first = false
else if(checkedSchoolTypes[i])
orClause += "OR schools.schoolType = " + schoolTypes[i]
query = "This is your query" + orClause + "rest of your query"
* Обратите внимание, что это решение для школьного проекта, а не производственной среды. Если бы вы делали это в производственной среде, в этом случае вы бы хотели передать информацию через параметризованную хранимую процедуру и сгенерировать свое заявление в sql на основе информации, переданной из формы.
Вместо того, чтобы делать или, как вы предлагаете, вы могли бы сделать и оператор IN, поскольку другие предполагают, что код будет в основном таким же с другим форматом. Дайте мне знать, если вам нужны какие-либо разъяснения.
Если ваш столбец schools.schoolType
имеет произвольный тип данных VARCHAR
, должна существовать некоторая связь между данными, которые пользователь отправляет, и данными, используемыми в запросе, если вы заранее не определите список возможных значений. ]
Похоже, у вас есть какая-то связь между вашим массивом Если ваш столбец [112] имеет произвольный тип данных [113], должна существовать некоторая связь между данными, которые пользователь отправляет, и данными, используемыми в запросе, если вы заранее не определите список возможных значений. ] Похоже, у вас есть какая-то связь между вашим массивом [114] и значением [115]. Таким образом, предполагая, что запрос требует Оттуда я бы сделал что-то вроде этого: Если ваш столбец Похоже, у вас есть какая-то связь между вашим массивом Если ваш столбец [112] имеет произвольный тип данных [113], должна существовать некоторая связь между данными, которые пользователь отправляет, и данными, используемыми в запросе, если вы заранее не определите список возможных значений. ] Похоже, у вас есть какая-то связь между вашим массивом [114] и значением [115]. Таким образом, предполагая, что запрос требует Оттуда я бы сделал что-то вроде этого: Это заполнило бы массив Используя это, вы можете добавить предложение Если Оттуда я бы сделал что-то вроде этого: Это заполнило бы массив Используя это, вы можете добавить предложение Если Это заполнило бы массив Используя это, вы можете добавить предложение Если arrayTypes
и значением
. Таким образом, предполагая, что запрос требует HighSchool
, это может быть обнаружено, если пользователь отправляет highschool
, используя вашу функцию basictext()
. $selectedTypes = array();
foreach($arrayTypes as $arr)
{
if(isSet(
schools.schoolType
имеет произвольный тип данных VARCHAR
, должна существовать некоторая связь между данными, которые пользователь отправляет, и данными, используемыми в запросе, если вы заранее не определите список возможных значений. ] arrayTypes
и значением
. Таким образом, предполагая, что запрос требует HighSchool
, это может быть обнаружено, если пользователь отправляет highschool
, используя вашу функцию basictext()
. selectedTypes
соответствующими типами того, что отправляет пользователь. IN
к вашему окончательному запросу. $placeholders = implode(',', array_fill(0, count($selectedTypes), '?'));
$template = "SELECT schools.schoolId,
schools.schoolName,
villages.villageName
FROM schools,
villages
WHERE schools.villageId = villages.villageId
AND schools.schoolType IN ($placeholders)";
$stmt = $pdo->prepare($template);
$stmt->execute($selectedTypes);
$result = $stmt->fetchAll();
$stmt = null;
selectedTypes
содержит ["HighSchool", "MiddleSchool", "TradeSchool"]
, то $placeholders
будет содержать [?, ?, ?]
. Это используется для создания шаблона SQL для подготовленного запроса оператора с использованием массива selectedTypes
в качестве входных данных. $result
должны иметь данные, которые вы ищете. HighSchool
, это может быть обнаружено, если пользователь отправляет highschool
, используя вашу функцию basictext()
. selectedTypes
соответствующими типами того, что отправляет пользователь. IN
к вашему окончательному запросу. selectedTypes
содержит ["HighSchool", "MiddleSchool", "TradeSchool"]
, то $placeholders
будет содержать [?, ?, ?]
. Это используется для создания шаблона SQL для подготовленного запроса оператора с использованием массива selectedTypes
в качестве входных данных. $result
должны иметь данные, которые вы ищете. selectedTypes
соответствующими типами того, что отправляет пользователь. IN
к вашему окончательному запросу. $placeholders = implode(',', array_fill(0, count($selectedTypes), '?'));
$template = "SELECT schools.schoolId,
schools.schoolName,
villages.villageName
FROM schools,
villages
WHERE schools.villageId = villages.villageId
AND schools.schoolType IN ($placeholders)";
$stmt = $pdo->prepare($template);
$stmt->execute($selectedTypes);
$result = $stmt->fetchAll();
$stmt = null;
selectedTypes
содержит ["HighSchool", "MiddleSchool", "TradeSchool"]
, то $placeholders
будет содержать [?, ?, ?]
. Это используется для создания шаблона SQL для подготовленного запроса оператора с использованием массива selectedTypes
в качестве входных данных. $result
должны иметь данные, которые вы ищете. HighSchool
, это может быть обнаружено, если пользователь отправляет highschool
, используя вашу функцию basictext()
.
Оттуда я бы сделал что-то вроде этого:
[110] Это заполнило бы массив selectedTypes
соответствующими типами того, что отправляет пользователь.
Используя это, вы можете добавить предложение IN
к вашему окончательному запросу.
Если selectedTypes
содержит ["HighSchool", "MiddleSchool", "TradeSchool"]
, то $placeholders
будет содержать [?, ?, ?]
. Это используется для создания шаблона SQL для подготовленного запроса оператора с использованием массива selectedTypes
в качестве входных данных.
$result
должны иметь данные, которые вы ищете.