Я немного борюсь с сбросом указателя. Я хочу сделать это, потому что я буду использовать тот же запрос дважды в том же скрипте. Насколько я могу это сделать, я могу это сделать, сбросив указатель после того, как я зациклился на извлеченном массиве. Если есть лучший способ сделать это, я бы хотел это услышать.
Во всяком случае, это то, что я получил.
$getEvent = $connection->prepare("SELECT * BLABLA FROM BLABLA"); $getEvent->bind_param("i", $eventID); $getEvent->execute(); $getEvent->bind_result($eventMember, $eventStaff, $eventMemberID, $eventMemberSuper); while($getEvent->fetch()) { // Do stuff } // Then bunch of code, before finally another //$getEvent->execute(); //Script doesn't work without this and next line //$getEvent->bind_result($eventMember, $eventStaff, $eventMemberID, $eventMemberSuper); while($getEvent->fetch()) { // Do other stuff }
Я попытался с $getEvent->data_seek(0);
но не повезло. Сценарий работает только в том случае, если я $getEvent->bind_result
. Заранее благодарим за любые ответы.
Это лишний раз накладывает нагрузку на сервер базы данных. Вместо того, чтобы перематывать и повторно использовать результирующий набор, сначала сохраните все это в массиве. Вы можете использовать его столько раз и разных способов, как вам нравится в коде приложения PHP.
Обновите исправленный код, чтобы он работал с MySQLi, а не с PDO. Кроме того, результаты были получены в ассоциативный массив.
$results = array(); while($getEvent->fetch()) { $results[] = array('eventMember'=>$eventMember, 'eventStaff'=>$eventStaff, 'eventMemberID'=>$eventMemberID, 'eventMemberSuper'=>$eventMemberSuper); } // Now use $results however you need to.
в$results = array(); while($getEvent->fetch()) { $results[] = array('eventMember'=>$eventMember, 'eventStaff'=>$eventStaff, 'eventMemberID'=>$eventMemberID, 'eventMemberSuper'=>$eventMemberSuper); } // Now use $results however you need to.