Сбросить указатель MySqli? - PullRequest
2 голосов
/ 14 июля 2011

Я немного борюсь со сбросом указателя. Я хочу сделать это, потому что я собираюсь использовать один и тот же запрос дважды в одном и том же скрипте. Насколько я могу работать, я могу сделать это с помощью сброса указателя после того, как я зациклился через извлеченный массив. Если есть лучший способ сделать это, я хотел бы услышать это.

Во всяком случае, это то, что я получил.

$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. Заранее спасибо за любые ответы.

1 Ответ

3 голосов
/ 14 июля 2011

Это создает ненужную дополнительную нагрузку на сервер базы данных.Вместо того, чтобы перематывать и повторно использовать результирующий набор, сначала сохраните все это в массиве.Затем вы можете использовать его столько раз и разными способами, сколько захотите в коде приложения 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...