PDO :: FETCH_CLASSTYPE - неожиданный результат - PullRequest
2 голосов
/ 04 марта 2012

Я в растерянности здесь. Не уверен, почему я получаю "stdClass". Разве я не получаю имя из 1-го столбца?

$sql = "SELECT cn, iso2, iso3, fid, sort FROM ct";
$stmt = $dbh->query($sql);
$result = $stmt->fetch( PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE );
var_dump($result);

//expected - first: cn.col holds country names
object(Brazil)[3]
  public 'iso2' => string 'BR' (length=2)
  public 'iso3' => string 'BRA' (length=3)
  public 'fid' => string '1' (length=1)
  public 'sort' => string '0' (length=1)

//received
object(stdClass)[3]
  public 'iso2' => string 'BR' (length=2)
  public 'iso3' => string 'BRA' (length=3)
  public 'fid' => string '1' (length=1)
  public 'sort' => string '0' (length=1)var_dump

1 Ответ

0 голосов
/ 03 февраля 2013

Скорее всего, проблема в том, что класс не определен (или находится в области действия). Я провел некоторое тестирование с использованием локальных данных.

$conn = new PDO("mysql:host=localhost;dbname=test", 'user', 'pass');
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); 

$stmt = $conn->prepare("SELECT name,email FROM `test_table`");
$stmt->execute();
$result = $stmt->fetch( PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE );

print_r($result) // returns stdClass Object ( [email] => 'test@test.com' ) 

Добавив это выше код PDO

Class levi{

}

Мне удалось вернуть его:

levi Object ( [email] => 'test@test.com') 
...