ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Let's PHPコミュのphp、MySQLでプロシージャ実行方法を教えてください。

  • mixiチェック
  • このエントリーをはてなブックマークに追加
■サーバー環境
php ・・・ 5.2.17
MySQL ・・・ 5.1.45
OS ・・・ Red Hat Enterprise Linux 4

■phpソース

(※)・・・データベースの接続idなどはは変更しております。
     データベースの接続はできているものと考えてください。
     SQLをprepareで直に書く方法をとる場合データが正常に取得できます。
     以下ソースは上記で正常に取得されたソースをプロシージャを使用し、
     同様の処理をしています。

以下、ソース〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
<html>
<head><title>PHP TEST</title></head>
<body>
<?php
session_start();

//データベースログインユーザ
$db_user = "xxx";
//データベースパスワード
$db_password = "xxx";
//接続先
$db_name = "mysql:host=xxx;dbname=xxx";

$loginId = "admin";
$loginPass = "admin110";

$logindata[] = Array($loginId,2);
$logindata[] = Array($loginPass,2);
$bindArray = $logindata;
// DB接続
$pdo = new PDO($db_name, $db_user, $db_password);

// SQL定義
$stmt = $pdo->prepare("CALL PR_1001(?,?)");

// バインド変数の設定
for ($bindCount=0; $bindCount < count($bindArray);$bindCount++){
$valueList = $bindArray[$bindCount];
$stmt->bindValue($bindCount + 1, $valueList[0], $valueList[1]);
}

// SQL実行
$stmt->execute();

// 取得したレコードを1行ずつ取得
$results = array();
while($obj = $stmt->fetch(PDO::FETCH_ASSOC)){
$results[] = $obj;
}
$mebId = $results[0];

// 取得した値を表示する
print($mebId['MASTER_NO']);
?>
</body>
</html>
以上、ソース〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

■プロシージャ登録内容
DROP PROCEDURE `PR_1001`//
CREATE DEFINER=`lv13192`@`%` PROCEDURE `PR_1001`(IN v_loginId VARCHAR(30),IN v_passWard VARCHAR(30))
BEGIN
set names sjis;
SELECT A.MASTER_NO FROM M_MASTER_MTR A WHERE A.LOGIN_ID = v_loginId AND A.PASSWARD = v_passWard AND A.DEL_FLG = '0';
END

■テーブルレコード
MASTER_NO LOGIN_ID PASSWARD MASTER_NAME REG_DT UPD_DT
12345678 admin admin110 名前 2010-04-23 20:01:02 2010-04-23 20:01:08
DEL_FLG
0

■エラーログ内容
PHP Notice: Undefined offset: 0 in /var/www/html/phptestPro.php on line 40

40行目がおかしいといわれているようですが、
何がおかしいかわかりません。
上記が修正できればプロシージャは実行できますでしょうか?
もし、他にもおかしなところがあれば、ご指摘宜しくお願い致します。

大変申し訳ありませんが、
ご教授の方、宜しくお願い致します。

コメント(3)

http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=PHP+Notice%3A+Undefined+offset&num=50
アドバイスありがとうございます!

プロシージャの設定の仕方が悪かったようです。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Let's PHP 更新情報

Let's PHPのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。