2014年09月22日

ストアドプロシージャ

MariaDB にて、ストアドプロシージャのほんのさわり。

1.下の構造のテーブルを作成
  これに、適当にデータをぶち込んでおく。
CREATE TABLE proctest (
   id int auto_increment primary key,
   title varchar(255),
   body varchar(255)
 );

proctest-data.jpg

2.ストアドプロシージャの作成
  下図のように、デリミタを「//」に変更するのを忘れない!
proc-create1.jpg

3.動作確認
  「ルーチンタブ」→「実行」の順にクリック。
  ダイアログが表示されるので、「値」に適当な数値を入力し実行。
proc-create2.jpg

proc-create3.jpg

proc-create4.jpg

4.PHP から呼んでみる
  testproc.php を作成。
<?php
try {
 $connect_db = "mysql:dbname=mylaravel;host=localhost";
 $connect_user = 'root';
 $connect_passwd = 'xxxxxxxxxxxx';

 //データベース接続
 $dbh = new PDO(
    $connect_db,
    $connect_user,
    $connect_passwd
 );

 $stmt = $dbh->prepare('CALL get_title(:code)');
 $code = 2;
// 下のように、直接値を書いちゃうとNG!
// $stmt->bindParam(':code', 1);
 $stmt->bindParam(':code', $code);
 // ストアドプロシージャをコールします
 $stmt->execute();

 while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
  echo $row['title'] . "\n";
 }
} catch(PDOException $e){
  var_dump($e->getMessage());
}

// 切断
$dbh = null;

  DOS窓だと、文字化けしちゃうので、とりあえずファイルに吐き出す。
dosmado.jpg

  NotePad で表示。OKだすね。
notepad.jpg
posted by NERDY at 17:47 | Comment(0) | 技術 | このブログの読者になる | 更新情報をチェックする

Laravel を使ってみる2

Laravel Quickstart を眺めてみる。
Installation と Local Development Environment はもういいや。
なので、Routing。

0.Apache の DocumentRoot の変更
  これやっとかないと、後々面倒なので。

  まず、xampp/apache/conf/httdp.conf の以下の場所を変更。
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
# DocumentRoot "/xampp/htdocs"
DocumentRoot "/xampp/public_html/secondStep/public"
# <Directory "/xampp/htdocs">
<Directory "/xampp/public_html/secondStep/public">
  #
  # Possible values for the Options directive are "None", "All",
  # or any combination of:

  次に、xampp/apace/conf/extra/httpd-xampp.conf の以下の場所を変更。
  これにより、管理画面へのアクセスは、http://localhost/xampp となる。
# この下1行追加
Alias /xampp "/xampp/htdocs/xampp/"
<Directory "/xampp/htdocs/xampp">
  <IfModule php5_module>
    <Files "status.php">
      php_admin_flag safe_mode off
    </Files>
  </IfModule>
#  この下3行追加
  AllowOverride AuthConfig
  Order allow,deny
  Allow from all
</Directory>

1.Routing
  app/routes.php の中身を見てみる。
<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the Closure to execute when that URI is requested.
|
*/

Route::get('/', function()
{
  return View::make('hello');
});
  View を呼んでるみたいね。

  app/views に、hello.php がいますね。これで例の「You have arrived.」画面が表示されてたわ
  けですな。
<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Laravel PHP Framework</title>
  <style>
    @import url(//fonts.googleapis.com/css?family=Lato:700);

    body {
      margin:0;
      font-family:'Lato', sans-serif;
      text-align:center;
      color: #999;
    }

    .welcome {
      width: 300px;
      height: 200px;
      position: absolute;
      left: 50%;
      top: 50%;
      margin-left: -150px;
      margin-top: -100px;
    }

    a, a:visited {
      text-decoration:none;
    }

    h1 {
      font-size: 32px;
      margin: 16px 0 0 0;
    }
  </style>
</head>
<body>
  <div class="welcome">
    <a href="http://laravel.com" title="Laravel PHP Framework">
    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUごにょごにょ続く"
    alt="Laravel PHP Framework"></a>
    <h1>You have arrived.</h1>
  </div>
</body>
</html>

  routes.php に次のコードを加えてみたりします。
Route::get('second', function() {
 return '例によって、こういう文言は2バイトで書いちゃう!';
});

routing.jpg

2.View の作成
  app/views に、firstView.php を作成する。
<h1>インド人<?php echo $action ?>カレー</h1>
<p>いやしかし、このセンス笑っちゃう!</p>

  で、routes.php に次の行を追加。
Route::get('curry', function(){
  $action = '完全無視';
  return View::make('firstView')->with('action',$action);
});

curry.jpg


View への値の受け渡しまでやってみますた。


posted by NERDY at 14:17 | Comment(0) | 技術 | このブログの読者になる | 更新情報をチェックする