thinkphp が sqlserver ストアド プロシージャを呼び出して複数の結果セットを返す方法
#まず拡張機能をインストールします
windows
2 つに分割します手順 1. PHP バージョンに対応する pdo 拡張機能を見つけて、ダウンロードして解凍し、php.ini で拡張機能を有効にします。注意する必要がある問題は、PHP バージョンと、それが PHP バージョンであるかどうかです。安全なバージョン2 .ODBCドライバーのダウンロード https://docs.microsoft.com/zh-cn/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server -2017、注意する必要はありません。システムのインストール パッケージをダウンロードするだけです。Linux は Windows に似ています。拡張機能をインストールするには、pecl を直接使用できます。正常に読み込まれたら、 , もちろん phpinfo() で確認できますが、拡張機能をインストールして問題がたくさんあると、本当に下痢になります。thinkphp は sqlsrv ストアド プロシージャを操作します
私が使用している tp バージョンは 5.0 で、複数のデータベースを操作しています。お役に立てれば幸いです構成設定ファイル// 账号数据库 'UserDBConn' => [ 'type' => 'sqlsrv', // 服务器地址 'hostname' => '139.129.1.1', // 数据库名 'database' => 'DB3', // 用户名 'username' => 'xxxx', // 密码 'password' => 'tt123!@#', // 端口 'hostport' => '5188' ], // 金币数据库 'ScoreDBConn' => [ 'type' => 'sqlsrv', // 服务器地址 'hostname' => '139.129.1.1', // 数据库名 'database' => 'DB2', // 用户名 'username' => 'xxxx', // 密码 'password' => 'tt123!@#', // 端口 'hostport' => '5188' ], // 记录数据库 'RecordDBConn' => [ 'type' => 'sqlsrv', // 服务器地址 'hostname' => '139.129.1.1', // 数据库名 'database' => 'DB1', // 用户名 'username' => 'xxxx', // 密码 'password' => 'tt123!@#', // 端口 'hostport' => '5188' ],
/** * @param $DbconnName */ protected function Dbconn($DbconnName){ try{ $conn = Db::connect($DbconnName); }catch (\InvalidArgumentException $e){ echo '连接异常'; die; } return $conn; }
Agent.php#を追加します## クエリと追加、削除、変更の両方に対してクエリを呼び出すことができますが、取得したい結果セットがない場合は、execute() を呼び出すことができます。
query() には欠点があります。バインディング パラメータの形式 (非パラメータ バインディング) が SQL に直接書き込まれる場合、これがストアド プロシージャではないと判断される可能性があります。
お願い特定の実装については、thinkphp/library/think/db/Connection.php の行 368 を確認してください。もちろん、結果セットは返されません。
procedure() を呼び出すこともできます。このメソッドを呼び出すと、結果セットが返されます。 最初は、この問題が発生しました。バインドされたパラメータの形式で送信しなかったので、SQL を直接書いた場合、結果セットを取得できませんでした。その後、SQL に SET NOCOUNT ON; を追加しました。提出しました。かろうじてリターンを受け取りました。記事の最後に、最初に取得した結果セットの解決策の例を示しましたが、本当に下痢でした。文句を言わずに見てください。
class Agent extends Model { public $Dbname = 'UserDBConn'; public function GetIndirectAgentList($agentId,$strAccount,$strSuperior,$iPageIndex,$pagesize) { $conn = $this->Dbconn($this->Dbname); try{ $TotalCount = 0; $res = $conn::query('exec [dbo].[Agent_GetAgentList] :agentId,:strAccount,:strSuperior,:iPageIndex,:pagesize,:TotalCount', [ 'agentId' => $agentId, 'strAccount' => [$strAccount, PDO::PARAM_STR], 'strSuperior' => [$strSuperior, PDO::PARAM_STR], 'iPageIndex' => [$iPageIndex, PDO::PARAM_INT], 'pagesize' => [$pagesize, PDO::PARAM_INT], 'TotalCount' => [$TotalCount, PDO::PARAM_INPUT_OUTPUT], ]); }catch (PDOException $e) { return false; } return $res; } }
最初の
Agent.php明らかに、
と @TotalCount
はここでは取得されません。 Agent_GetAgentList
public function GetIndirectAgentList($agentId,$strAccount,$strSuperior,$iPageIndex,$pagesize)
{
$conn = $this->Dbconn($this->Dbname);
try{
$res = $conn->query('
SET NOCOUNT ON;
declare @AgentID int;
declare @TotalCount int;
exec [dbo].[Agent_GetAgentList] '.$agentId.',\''.$strAccount.'\',\''.$strSuperior.'\','.$iPageIndex.','.$pagesize.',@TotalCount output;
select @AgentID as AgentID,@TotalCount as TotalCount
');
}catch (PDOException $e)
{
return false;
}
return $res;
}
以上がthinkphp が sqlserver ストアド プロシージャを呼び出して複数の結果セットを返す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









ThinkPHP プロジェクトを実行するには、Composer をインストールし、Composer を使用してプロジェクトを作成し、プロジェクト ディレクトリに入り、php bin/consoleserve を実行し、http://localhost:8000 にアクセスしてようこそページを表示する必要があります。

ThinkPHP には、さまざまな PHP バージョン向けに設計された複数のバージョンがあります。メジャー バージョンには 3.2、5.0、5.1、および 6.0 が含まれますが、マイナー バージョンはバグを修正し、新機能を提供するために使用されます。最新の安定バージョンは ThinkPHP 6.0.16 です。バージョンを選択するときは、PHP バージョン、機能要件、コミュニティ サポートを考慮してください。最高のパフォーマンスとサポートを得るには、最新の安定バージョンを使用することをお勧めします。

ThinkPHP フレームワークをローカルで実行する手順: ThinkPHP フレームワークをローカル ディレクトリにダウンロードして解凍します。 ThinkPHP ルート ディレクトリを指す仮想ホスト (オプション) を作成します。データベース接続パラメータを構成します。 Webサーバーを起動します。 ThinkPHP アプリケーションを初期化します。 ThinkPHP アプリケーションの URL にアクセスして実行します。

Laravel フレームワークと ThinkPHP フレームワークのパフォーマンスの比較: ThinkPHP は、最適化とキャッシュに重点を置いて、一般に Laravel よりもパフォーマンスが優れています。 Laravel は優れたパフォーマンスを発揮しますが、複雑なアプリケーションの場合は、ThinkPHP の方が適している可能性があります。

「開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法」 インターネット技術の急速な発展に伴い、Web アプリケーションには、多数の同時リクエストと複雑なビジネス ロジックを処理するための要件がますます高まっています。システムのパフォーマンスとユーザー エクスペリエンスを向上させるために、開発者は多くの場合、電子メールの送信、ファイルのアップロードの処理、レポートの生成など、時間のかかる操作を実行するために非同期タスクの使用を検討します。 PHP の分野では、人気のある開発フレームワークとして ThinkPHP フレームワークが、非同期タスクを実装するための便利な方法をいくつか提供しています。

ThinkPHP のインストール手順: PHP、Composer、および MySQL 環境を準備します。 Composer を使用してプロジェクトを作成します。 ThinkPHP フレームワークと依存関係をインストールします。データベース接続を構成します。アプリケーションコードを生成します。アプリケーションを起動し、http://localhost:8000 にアクセスします。

ThinkPHP は、キャッシュ メカニズム、コードの最適化、並列処理、データベースの最適化などの利点を備えた高性能 PHP フレームワークです。公式パフォーマンステストでは、1秒あたり10,000以上のリクエストを処理できることが示されており、実際のアプリケーションではJD.comやCtripなどの大規模なWebサイトやエンタープライズシステムで広く使用されています。

ThinkPHP6 と Swoole をベースとした RPC サービスがファイル転送機能を実装 はじめに: インターネットの発展に伴い、ファイル転送は私たちの日常業務においてますます重要になってきています。この記事では、ファイル転送の効率化とセキュリティを向上させるために、ThinkPHP6とSwooleをベースとしたファイル転送機能を実現するRPCサービスの具体的な実装方法を紹介します。 WebフレームワークとしてThinkPHP6を使用し、SwooleのRPC機能を利用してサーバー間のファイル転送を実現します。 1. 環境基準
