3

pdo_sqlsrv ドライバー (PHP 5.4) を使用して、SQL Server を操作します。

私のDBには、varbinaryタイプとサイズが7584の列があります。

この列から値を取得しようとすると、このエラーが発生します

Invalid sql_display_size in G:\..\..\..\framework\yiilite.php on line 8836

クエリは次のとおりです。

DECLARE @item varbinary(1728); SET @item = (SELECT Inventory FROM Character WHERE Name='CharName'); print @item;

この場合、必要なサイズを正確に取得します。通常の php クエリ (PDO ではない) および SQL Server Management Studio で動作します。

このコードを Yii で実行すると:

$query = "DECLARE @item varbinary(1728); SET @item = (SELECT Inventory FROM Character WHERE Name='CharName'); print @item";
$command=Yii::app()->db->createCommand($query)->query();
$command->read();

私はこれを得る:

SQLSTATE[IMSSP]: クエリのアクティブな結果にフィールドが含まれていません。

間違ったクエリを作成したと思います。

私の質問は、Yii でこのようなクエリを実行するにはどうすればよいですか?

4

2 に答える 2

1

この問題を解決しました。PDO_SQLSRV ドライバーは、Windows 上の MS SQL Server と完全に連携します。

問題は、間違ったクエリを実行しようとしたことです。

$query = "DECLARE @item varbinary(1728); SET @item = (SELECT Inventory FROM Character WHERE Name='CharName'); print @item";
$command=Yii::app()->db->createCommand($query)->query();

作業クエリ:

$query = "DECLARE @items varbinary(max);SET @items = (SELECT Inventory FROM Character WHERE Name='$id');Select @items";
            $getI = Yii::app()->db->createCommand($query)->queryScalar();

それで全部です。

于 2013-02-03T15:33:48.650 に答える
0

あなたの質問は、Yii フォーラムですでに回答されています。

編集: Google でクイック検索すると、有効な回答がたくさん見つかります: 最も有効な回答は、mssql PDO ドライバーにはバグがたくさんあるということです。バグの少ない ODBC ドライバーを使用できます。

于 2012-12-21T08:54:50.533 に答える