2日前、私は同僚と在庫管理システムを開発しました。私はページプログラムを書く責任を負い、同僚はストアドプロシージャを書く責任を負いました。 PHP を使用してストアド プロシージャを呼び出したところ、問題が発生しました。
今後開発する場合は次の点に注意する必要があります:
1. MYSQL データベースに接続するときは、最後の 2 つのパラメーターに注意してください
define('CLIENT_MULTI_RESULTS', 131072); //定数を定義します
$conn=mysql_connect("localhost","root","123456",1,CLIENT_MULTI_RESULTS);
$db=mysql_select_db("db01",$conn);
2. ストアド プロシージャ メソッドを呼び出します
方法はとても簡単です
(1)戻り値なし
mysql_query("call nj_keep_accounts_sp($id)",$conn); // ストアドプロシージャ名: nj_keep_accounts_sp パラメータ: $id
(2)戻り値がある
$id=$_GET["id"];
$r=mysql_query("call nj_keep_accounts_sp($id)",$conn);
while($rs=@mysql_fetch_array($r)){
echo($rs["t_id"]);
}
3. デバッグ中にエラーが報告されなかった場合、実行は一時的には正常に動作することもありますが、しばらくは動作しない場合があることに注意してください。
これはテスト中に発生しました。コード自体にはエラーがなく、MYSQL でストアド プロシージャが実行されたときにもエラーが発生しませんでした。問題はどこで発生しましたか?
2 日間のテストの後、ストアド プロシージャを作成する際、デバッグ プロセス中に実行の開始、中間、終了時にテストの戻り値が追加されていることが最終的に判明しました。ここで問題が発生します。
役に立たない戻り値 (select @a など) と同様のコードをすべてコメントした後、以前の問題がすべて解決され、プログラムが使いやすくなったことがわかりました。
newseraより抜粋