2017-04-21 59 views
0

您的問題在哪裏?Php函數錯誤(PDO類的對象)

錯誤:捕獲的致命錯誤:類PDOStatement對象的對象不能被轉換成字符串

在DB等級SP功能;

function sp() 
{ 
    $this->baglantiAc(); 
    $query = $this->db->prepare("DECLARE @key nvarchar(50); EXEC [dbo].[get_next_UniqueNumber] @key_lenght = 50, @key = @key OUTPUT; SELECT @key as lkey"); 
    $query->execute(); 
    $query->nextRowset(); 
    $this->baglantiKapat(); 
    //var_dump($query->fetch(PDO::FETCH_ASSOC)); 
    $query->fetch(PDO::FETCH_ASSOC); 
    return $query; 

} 

我打電話給這樣的頁面,但是有一個錯誤。

$DB = new DB_Class(); 
$row = $DB->sp(); 
echo $row; 
+0

echo $ row;是完整的對象,你不能訪問direclty。通過print_r($ row)檢查; –

+0

當我做print_r($ row)時,得到的查詢 –

+0

你得到了什麼迴應:var_dump($ query-> fetch(PDO :: FETCH_ASSOC)); –

回答

0

我會建議刪除與var_dump的評論,看看你得到什麼。似乎查詢出了問題,我可以看到至少有一個輸入錯誤length

此外,查詢是您嘗試回顯的PDOStatement對象。 如果你想得到迴應的提取我會推薦這樣的事情:

function sp() 
{ 
    $this->baglantiAc(); 
    $query = $this->db->prepare("DECLARE @key nvarchar(50); EXEC [dbo].[get_next_UniqueNumber] @key_length = 50, @key = @key OUTPUT; SELECT @key as lkey"); 
    $query->execute(); 
    $query->nextRowset(); 
    $this->baglantiKapat(); 
    //var_dump($query->fetch(PDO::FETCH_ASSOC)); 
    $response = $query->fetch(PDO::FETCH_ASSOC); 
    return $response; 
} 

$DB = new DB_Class(); 
$row = $DB->sp(); 
print_r($row); 
+0

OK, 顯示 「陣列([LKEY] => 00000000000000000000000000000000000000000000000WE0)」 $ DB =新DB_Class(); \t $ row = $ DB-> sp(); \t foreach($ row as $ key => $ val){ \t echo $ val; \t} –

0

$queryPDOStatement類型的對象。

$query->fetch(PDO::FETCH_ASSOC);意味着fetch results from PDOStatement。但你沒有將這個返回的結果賦值給一個變量。所以你的代碼應該是:

// $query->fetch(PDO::FETCH_ASSOC) 
    // return $query; 
    return $query->fetch(PDO::FETCH_ASSOC); 
} // end of function