PHP: mysqli_fetch_assoc не работает с хранимыми процедурами - PullRequest
0 голосов
/ 04 марта 2010

У меня есть таблица 'account' (id, email, pass) в базе данных MySQL.

У меня хранимая процедура :

DELIMITER $$
CREATE PROCEDURE `LoadAccount`(email_p VARCHAR(100))
BEGIN
    SELECT pass FROM account WHERE email = email_p;
END$$
DELIMITER ;

А вот код :

function loadAccount($email, $pass)
{
  // connect to DB
  // ...
  $query = "CALL LoadAccount('{$email}')";

  if ($mysqli->multi_query($query))
  {
    do
    {
      if ($result = $mysqli->store_result())
      {
        // Numbered array.
        while ($row = $result->fetch_array(MYSQLI_NUM))
        {
          printf("%s %s\n", $row[0]);
        }

        // Associative array.
//        while ($row = $result->fetch_array(MYSQLI_ASSOC))
//        {
//          printf("%s\n", $row['pass']);
//        }
        $result->free();
      }
      $mysqli->more_results();
    } while ($mysqli->next_result());
  }
}

Итак, секция нумерованного массива работает, но если я закомментирую и раскомментирую секцию ассоциативного массива - страница просто зависнет и потеряет соединение.

Почему это не работает?

Ответы [ 2 ]

1 голос
/ 04 марта 2010

Не уверен, что опечатка есть в вашем коде или нет, но:

printf("%s\n", $row[pass]);

должно быть:

printf("%s\n", $row['pass']);
0 голосов
/ 05 марта 2010

Ну, для таких странных вещей переустановка PHP помогает! По крайней мере, на этот раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...