Присвоение переменной значения 1 или 0 в зависимости от того, появляется ли другая переменная в результатах запроса

0

У меня есть запрос $sqlStr4, который "выбирает" эти поля из базы данных MySQL:

loginid
username
created

Запрос $sqlStr4 ограничен 10 строками/результатами.

У меня также есть следующая переменная:

$u = $_SESSION['username'];

Я хотел бы присвоить другую переменную $topten значение 1, если $u равно любому из десяти username полей, возвращаемых запросом $sqlStr4, и значение 0, если это не так.

Как я могу это сделать?

Спасибо заранее,

Джон

Теги:

3 ответа

0
Лучший ответ

Использование:

<?php

$u = $_SESSION['username'];
$topten = 0;

$result = mysql_query($sqlStr4);

while ($row = mysql_fetch_assoc($result)) {
  if ($row['username'] == $u) {
    $topten = 1;
    break;
  }
}

mysql_free_result($result);
?>
0

Можно попробовать что-то вроде этого...

while ($row = mysql_fetch_assoc($sqlStr4))
{
    $topten = ($u == $row['username']) ? 1 : 0;
    // the rest of your processing code here
}

Там могут быть лучшие решения для вашей ситуации. Было бы проще, если бы вы разместили код!

  • 0
    Это сбросит значение $topten на ноль, если последующие записи не совпадают.
  • 0
    @OMG - это полностью зависит от того, чего хочет ОП. Если они просто проверяют это, то они могут просто использовать mysql_num_rows() в запросе. Я сделал предположение, что он хочет пройтись по циклам и что-то сделать со строками, поэтому он хотел бы, чтобы значение каждый раз сбрасывалось. Простой if ($topten) break; мог быть добавлен, если бы эта проверка была всем, что хотел сделать ОП, но в этом случае я бы порекомендовал ему пересмотреть свой запрос!
0

Если вы вставили запрос, мы могли бы предоставить фиксированную версию. Вы можете сделать это несколькими способами, но нужно добавить столбец в свой запрос и использовать оператор CASE.

select *, CASE WHEN username = '$u' THEN 1 ELSE 0 END as topten
from ...

Это просто пример. Очевидно, чтобы предотвратить SQL-инъекцию, вы должны ее параметризовать или использовать mysql_real_escape_string() или хранимую процедуру и т.д. и т.д....

EDIT: Я вижу, что вы хотите, чтобы переменная находилась в PHP... поэтому вам нужно было бы пройти через массив, чтобы проверить каждый. В чем проблема, с которой вы сталкиваетесь?...

$topten = 0;
if ($result) {
   while ($record = mysql_fetch_array($result)) {
      if ($record['username'] == $u) $topten = 1;
   }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню