2017-04-21 5 views
0

どこに問題がありますか?Php関数エラー(クラスオブジェクトPDOStatement)

エラー:キャッチできる致命的なエラー:クラスの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でコメントを削除し、何を得ているかを確認することをお勧めします。クエリに何か問題があり、少なくとも1つのタイプミスがlengthと表示されているようです。

また、クエリはエコーしようとしているPDOStatementのオブジェクトです。 fetchの応答を取得したい場合は、次のようなものをお勧めします。

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($行は$ key => $ val){ \t echo $ val; \t} –

0

$queryタイプPDOStatementの目的です。

Doing $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 
関連する問題