ホーム > 日記 > MySQL5.0からストアドプロシージャが利用できるらしい その1

MySQL5.0からストアドプロシージャが利用できるらしい その1

MySQLでストアドプロシージャが使えるといまさら知ったのでさわりだけ。
たぶんその2はない。

phpMyAdminで叩いていてみたけど他のとこでエラーでるというかそもそも対応していない。
えくすぽーとに関しては2.9.0から対応してるみたいだけど。

とりあえず直接叩いてみた。


mysql> CREATE DATABASE sample;
Query OK, 1 row affected (0.17 sec)

mysql> CREATE TABLE sample(
    -> id INT(11) NOT NULL auto_increment PRIMARY KEY,
    -> name VARCHAR(32) NOT NULL,
    -> age INT(11) NOT NULL
    -> );
Query OK, 0 rows affected (0.94 sec)

mysql> INSERT INTO sample(name, age) VALUE('yotsuba', 14);
Query OK, 1 row affected (0.09 sec)

mysql> SELECT * FROM sample;
+----+---------+-----+
| id | name    | age |
+----+---------+-----+
|  1 | yotsuba |  14 |
+----+---------+-----+
1 row in set (0.04 sec)

mysql> DELIMITER |
mysql> CREATE PROCEDURE sample1()
    -> BEGIN
    -> SELECT name, age FROM sample;
    -> END
    -> |
Query OK, 0 rows affected (0.51 sec)

mysql> DELIMITER ;
mysql> CALL sample1;
+---------+-----+
| name    | age |
+---------+-----+
| yotsuba |  14 |
+---------+-----+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.02 sec)

んで、PHPから。
mysql利用してみるとエラーでて、エラーコードみると利用は不可能そうだったので、mysqliから。
PDOからでも大丈夫らしい。


<?php
if (!$mysqli = mysqli_connect('localhost', 'user', 'passwd', 'sample')) {
    echo 'connection failed';
    exit;
}
if (!$res = $mysqli->query('call sample1')) {
    print $mysqli->errno();
    print $mysqli->error();
    exit;
}
while ($row = mysqli_fetch_assoc($res)) {
    var_dump($row);
}
?>

カテゴリー: 日記 タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。