Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Поиск в массиве на совпадение значений
Форумы портала PHP.SU » » Работа с СУБД » Поиск в массиве на совпадение значений

Страниц (2): [1] 2 »
 

1. skelmen - 03 Июня, 2015 - 16:17:34 - перейти к сообщению
Здравствуйте. Как правильно сравнить, не получатся никак. Делаю выбираю всех Ф.И.О. из таблицы:
PHP:
скопировать код в буфер обмена
  1. $query = "SELECT FULLNAME FROM TABLE";
  2. $full = ibase_query($query);
  3. $f = ibase_fetch_assoc($full);

Есть переменная $fullname (в ней Ф.И.О.) из полей формы. И 100% такое Ф.И.О. есть в БД.
Делаю так: выдает "нет такого"
PHP:
скопировать код в буфер обмена
  1. if (in_array($fullname, $f['FULLNAME']))
  2.         {
  3.         echo "нашло";
  4.         } else {
  5.         echo "нет такого";
  6.         }

Делаю так, аналогично, "нет такого"
PHP:
скопировать код в буфер обмена
  1.     if (isset($f[$fullname]))
  2.         {
  3.         echo "нашло";
  4.         } else {
  5.         echo "нет такого";
  6.         }

В общем суть такова: если $fullname находит в массиве, то {делается что-то}, а если нет, то создается новый человек и заносится в другую табличку.
Пробовал через цикл while с перебором всех значений, то работает, но там слишком много у меня заморочек с условиями.
Помогите, пожалуйста! Как решить проблему?
2. Sail - 03 Июня, 2015 - 16:50:50 - перейти к сообщению
skelmen,
skelmen пишет:
$f = ibase_fetch_assoc($full);
поместит в $f одну запись из набора данных, полученного в результате запроса, либо вернёт FALSE, если необработанных записей не осталось (или не было вовсе).
3. skelmen - 03 Июня, 2015 - 16:58:15 - перейти к сообщению
Sail пишет:
skelmen,
skelmen пишет:
$f = ibase_fetch_assoc($full);
поместит в $f одну запись из набора данных, полученного в результате запроса, либо вернёт FALSE, если необработанных записей не осталось (или не было вовсе).

Почему одну запись? Разве не все выбранные записи (FULLNAME)?
4. Sail - 03 Июня, 2015 - 17:26:43 - перейти к сообщению
skelmen пишет:
Почему одну запись? Разве не все выбранные записи (FULLNAME)?

Все возвращает ibase_query(). Вот из них ibase_fetch_assoc() достаёт одну...
Вот и крутите его в цикле, пока не вернёт FALSE
5. skelmen - 03 Июня, 2015 - 20:25:07 - перейти к сообщению
Sail пишет:
skelmen пишет:
Почему одну запись? Разве не все выбранные записи (FULLNAME)?

Все возвращает ibase_query(). Вот из них ibase_fetch_assoc() достаёт одну...
Вот и крутите его в цикле, пока не вернёт FALSE

А как поставить правильно условия, чтоб сначала оно прошлось по циклу,если нашло, то выполняется что-то..., а если не нашло, то выполняется что-то другое?
PHP:
скопировать код в буфер обмена
  1.  
  2. while ($f = ibase_fetch_assoc($full)){
  3. if ($fullname == $f['FULLNAME'])
  4. {...}
  5. else
  6. {...}
  7. }

Такое мне не катит.
6. DeepVarvar - 03 Июня, 2015 - 21:08:21 - перейти к сообщению
А я вот не понял, почему условие нельзя было сразу передать в запросе?
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT FULLNAME
  2.     FROM TABLE
  3.     WHERE FULLNAME = 'foobar'
7. skelmen - 04 Июня, 2015 - 11:41:17 - перейти к сообщению
DeepVarvar пишет:
А я вот не понял, почему условие нельзя было сразу передать в запросе?
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT FULLNAME
  2.     FROM TABLE
  3.     WHERE FULLNAME = 'foobar'

Я так пробовал, если вы имеете в виду это:
PHP:
скопировать код в буфер обмена
  1. $query = "SELECT FULLNAME FROM TABLE WHERE FULNAME='$fullname'";
  2. $full = ibase_query($query);
  3. $f = ibase_fetch_assoc($full);
  4. if ($fullname == $f['FULLNAME'])
  5. {...}
  6. else
  7. {...}
  8. }
  9.  

Оно работало, но выполнялись какие-то действия в условиях, которые не должны были, сейчас не могу вспомнить и найти какие именно, т.к. все вроде сейчас тестирую и все норм.
8. DeepVarvar - 04 Июня, 2015 - 11:51:45 - перейти к сообщению
Из моего примера надо было проверить только вернулся ли результат из БД или нет.
А если у тебя там будет мильён записей ты так же будешь массивчиком перебирать? ССЗБ тогда.
9. skelmen - 04 Июня, 2015 - 12:04:04 - перейти к сообщению
Тогда вернемся к моему исходному вопросу. Как мне найти это значение $fullname и проверить на совпадение?
10. DeepVarvar - 04 Июня, 2015 - 12:10:15 - перейти к сообщению
skelmen пишет:
Как мне найти это значение $fullname и проверить на совпадение?

DeepVarvar пишет:
SELECT FULLNAME
FROM TABLE
WHERE FULLNAME = 'foobar'

DeepVarvar пишет:
проверить только вернулся ли результат из БД или нет
11. Sail - 04 Июня, 2015 - 12:20:41 - перейти к сообщению
skelmen, посмотрев описание работы функции ibase_query() по ссылочке, подставленной в Ваш пример, можно выяснить, что она имеет три варианта возвращаемого значения.
Спойлер (Отобразить)
12. skelmen - 05 Июня, 2015 - 12:19:05 - перейти к сообщению
Sail пишет:
skelmen, посмотрев описание работы функции ibase_query() по ссылочке, подставленной в Ваш пример, можно выяснить, что она имеет три варианта возвращаемого значения.
Спойлер (Отобразить)

Делаю по вашему примеру, получается так:
1. if($full === TRUE) - все ок, создается новый, и делаются действия
2. elseif($full === FALSE) - тут понятно.
3. else - тут не все ок, вместо него выполняется то же,что внутри if($full === TRUE)
ibase_free_result($full); н я никуда не вставлял.
13. DeepVarvar - 05 Июня, 2015 - 13:14:47 - перейти к сообщению
skelmen пишет:
ibase_free_result($full); н я никуда не вставлял
А в жизни ты за собой тоже не убираешь?
14. skelmen - 05 Июня, 2015 - 13:22:09 - перейти к сообщению
DeepVarvar пишет:
skelmen пишет:
ibase_free_result($full); н я никуда не вставлял
А в жизни ты за собой тоже не убираешь?

Разве не видно, что я не знаю как решить задачу? неужели так сложно просто взять и помочь без стёбов, насмешек, и т.д.?
15. Sail - 05 Июня, 2015 - 13:26:03 - перейти к сообщению
skelmen пишет:
3. else - тут не все ок, вместо него выполняется то же,что внутри if($full === TRUE)

Быть может, не "=== TRUE" написали в коде, а "== TRUE"?

 

Powered by ExBB FM 1.0 RC1