SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

WindowsでPHPからストアドプロシージャ/ストアドファンクションを実行する

コードの単純化と高速化を実現

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルコード (2.7 KB)

MySQLエクステンションを使用してストアドファンクションを呼び出す

 ここでは、関数の呼び出し例として、次の簡単なストアドファンクションを使います。

CREATE FUNCTION simple_operation (price int) RETURNS int(11)
RETURN price*1000

 simple_operation関数は、整数の引数を取り、簡単な計算を行って整数の結果を返します。

<?php
 $con = mysql_connect('localhost','root','',false,65536);
 mysql_select_db('books');
 
 //Calling the simple_operation function
 $rs = mysql_query( 'SELECT simple_operation(5)' );
 while($row = mysql_fetch_row($rs))
 {
  echo 'The total price is = '.$row[0];
 }
mysql_close($con);
?>

 出力は次のようになります。

The total price is = 5000

MySQLiを使用してストアドプロシージャを呼び出す

 MySQLi(MySQL Improved)エクステンションは、MySQL 4.1以上で提供される機能を利用できるようにするものです。MySQLiエクステンションのDLL(php_mysqli.dll)はデフォルトでは有効にならないので、php.iniの中で有効にする必要があります。MySQLiエクステンションの機能については、このリンクを参考にしてください。

 次の例では、前に説明した2つのプロシージャproc()total_price()を使います。MySQLiエクステンションを使用してストアドプロシージャを呼び出す構文は次のとおりです。

$mysqli->query( 'CALL proc()' );

 次のPHPスクリプトは、proc()ストアドプロシージャを呼び出し、結果を出力します。

<?php
//Connecting to the books database 
$mysqli = new mysqli('localhost', 'root', '', 'books');
//Calling the proc() procedure
$rs = $mysqli->query( 'CALL proc()' );
while($row = $rs->fetch_object())
{
print_r($row);
echo "<br />";
}
?>

 出力は次のようになります。

stdClass Object ( [id] => 1 [book] => Introduction to PHP [author] => 
   Mark User [isbn] => 3334-4424-334-3433 [price] => 500 ) 
stdClass Object ( [id] => 2 [book] => DHTML and CSS [author] => 
   Teague Sanders [isbn] => 4545-23-23-23-23232 [price] => 1500 ) 
stdClass Object ( [id] => 3 [book] => Introduction to PHP [author] => 
   Weeling Tom [isbn] => 4334-2323-23233-434 [price] => 300 ) 
stdClass Object ( [id] => 4 [book] => Web design [author] => 
   Weeling Tom [isbn] => 4334-2323-23233-434 [price] => 600 ) 
stdClass Object ( [id] => 5 [book] => PHP 5 [author] => 
   Weeling Tom [isbn] => 444-87-67665-678678 [price] => 600 ) 
stdClass Object ( [id] => 6 [book] => JavaServer Pages [author] => 
   Tick Own [isbn] => 897-9898-987-099 [price] => 800 )

 同様に、次の例では、total_price()ストアドプロシージャを呼び出し、結果を出力します。

<?php
$mysqli = new mysqli('localhost', 'root', '', 'books');
$rs = $mysqli->query( 'CALL total_price(@t)' );
$rs = $mysqli->query( 'SELECT @t' );
while($row = $rs->fetch_object())
{
print_r($row);
echo "<br />";
}
?>

 この例の出力は次のようになります。

The total price : stdClass Object ( [@t] => 4300 )

次のページ
PDOを使用してストアドプロシージャを呼び出す

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Octavia Andreea Anghel(Octavia Andreea Anghel)

経験豊富なPHP開発者。現在は、国内外のソフトウェア開発コンテストに参加するプログラミングチームの主任トレーナーを務める。国レベルの教育プロジェクト開発のコンサルティングも担当している。共著書に『XML technologies?XML in Java』があり、XML部分の執筆を担当。PHPやXML...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4575 2009/12/07 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング