LINUX.ORG.RU

тупой вопрос по fetch();

 ,


0

1
$num_sql = $db->query("SELECT * FROM num");
$num_sql->setFetchMode(PDO::FETCH_ASSOC);

$num1 = $num_sql->fetch();
$num2 = $num_sql->fetch();

print_r($num1);
print_r($num2);

Внимание, вопрос: какого хера вывод num1 и num2 совпадать не будут?

★★★★★

Ответ на: комментарий от goingUp

ээ... а как быть, если их надо гонять в цикле постоянно? Вообще, как сделать, чтобы при каждом обращении fetch всегда брался первый элемент массива?

leg0las ★★★★★ ()
Последнее исправление: leg0las (всего исправлений: 1)
Ответ на: комментарий от goingUp

Смотри, есть массив с данными, например циферки 1, 2, 3, 4, 5. fetch будет при каждом обращении брать следующее значение, а мне необходимо первое значение. Это можно как-нибудь передать fetch, или оно так не умеет?

leg0las ★★★★★ ()
Ответ на: комментарий от leg0las

fetch будет при каждом обращении брать следующее значение, а мне необходимо первое значение.

Вызывай fetch() один раз.

i-rinat ★★★★★ ()

какого хера вывод num1 и num2 совпадать не будут?

второй фетч заберет вторую ячейку потому что

umren ★★★★★ ()
Ответ на: комментарий от leg0las

есть массив с данными, например циферки 1, 2, 3, 4, 5.

Ты имеешь в виду результат запроса?

$row = $num_sql->fetch()ж
print_r($row); //первый раз
print_r($row); //второй раз

Это можно как-нибудь передать fetch, или оно так не умеет?

Есть fetchAll, но дергать его несколько раз и брать нулевой элемент - тупо.

goingUp ★★★★★ ()
Последнее исправление: goingUp (всего исправлений: 1)

fetchAll

PDOStatement::fetch — Извлечение следующей строки из результирующего набора
PDOStatement::fetchAll — Возвращает массив, содержащий все строки результирующего набора

anonymous ()
Ответ на: комментарий от goingUp

Мне нужно два вайла, один вложен в другой, вот во вложеном должен фетч бегать при каждом проходе, а по факту я получаю болт после первого прохода (либо бери, выгребай массив в переменную и трахайся с ним). В классическом mysql/mysqli вроде ж такого нет?

leg0las ★★★★★ ()
Ответ на: комментарий от leg0las

В классическом mysql/mysqli вроде ж такого нет?

В большинстве библиотек такой же принцип работы с БД. И от языка это не зависит.

anonymous ()
Ответ на: комментарий от anonymous

По-моему там используется с первого, если я не ошибаюсь

leg0las ★★★★★ ()
Последнее исправление: leg0las (всего исправлений: 1)
Ответ на: комментарий от leg0las

Сохранение результата в переменную не костыль. Вот попытки заставить fetch делать то, что он не делает - костыль :)

goingUp ★★★★★ ()
Ответ на: комментарий от goingUp

мне всего-навсего нужен первый результат, а не следущий, это значительно упростило бы код, когда я напрямую сравнивал известные значения из БД и строил бы то, что мне нужно. Для индуса правда это отличный способ выстрелить себе в ногу.

leg0las ★★★★★ ()

Какие-то странные у тебя запросы.

ritsufag ★★★★★ ()
Ответ на: комментарий от leg0las

бери, выгребай массив в переменную и трахайся с ним

Именно так. И это абсолютно правильный подход. А то что хочешь ты и есть костыль.

Suntechnic ★★★★★ ()
Ответ на: комментарий от leg0las

для некоторых БД курсоры можно обновлять, тогда начнётся сначала, но pdo не предоставляет такой возможности:

http://stackoverflow.com/questions/15111681/reset-cursor-position-in-pdo

http://stackoverflow.com/questions/9437214/resetting-array-pointer-in-pdo-res...

qnikst ★★★★★ ()
Ответ на: комментарий от qnikst

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

leg0las ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.