Eu estava procurando a mesma resposta e me deparei com este artigo . Foi atualizado pela última vez em agosto. Nele, há uma seção:"Determinando o tipo de uma declaração" Você basicamente pode fazer as seguintes suposições:(copiado do artigo)
- Se columnCount() for zero, a instrução não produziu um conjunto de resultados. Em vez disso, ele modificou as linhas e você pode invocar rowCount() para determinar o número de linhas afetadas.
- Se columnCount() for maior que zero, a instrução produziu um conjunto de resultados e você poderá buscar as linhas. Para determinar quantas linhas existem, conte-as ao buscá-las.
Vou poupar-lhe o trabalho e apenas colar o exemplo de código aqui
$sth = $dbh->prepare ($stmt);
$sth->execute ();
if ($sth->columnCount () == 0)
{
# there is no result set, so the statement modifies rows
printf ("Number of rows affected: %d\n", $sth->rowCount ());
}
else
{
# there is a result set
printf ("Number of columns in result set: %d\n", $sth->columnCount ());
$count = 0;
while ($row = $sth->fetch (PDO::FETCH_NUM))
{
# display column values separated by commas
print (join (", ", $row) . "\n");
$count++;
}
}