Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

chamando o procedimento armazenado aninhado do php


Do PHP você está olhando apenas para o PRIMEIRO conjunto de resultados. A partir da linha de comando, ele simplesmente exibe todos os conjuntos de resultados.

Cada chamada de proc armazenada acima está gerando um novo conjunto de resultados exclusivo (diferentes campos possíveis, etc.)

Para corrigir, você pode passar para o próximo conjunto de resultados, se houver:

Use odbc_next_result ( resource $result_id )

Alternativamente, usando o Mysqli, você pode usar estes três comandos:

$resultado =$conexão->multi_query("selecione * de foo....");$resultado =$conexão->store_result();$conexão->next_result();

Usando seu código como exemplo, você pode encapsular seu código que está gerando resultados dentro de um loop do..while como este:
$result= $mysqli->multi_query("SELECT first_id,second_id from pair_find");

do {
  $result = $mysqli->store_result();

  while($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
  {
     print_r($row);
  }
} while ($mysqli->next_result());

http://php.net/manual/en/function.odbc -next-result.php

http://php.net/manual/en/mysqli.next-result .php