アプリ版:「スタンプのみでお礼する」機能のリリースについて

Fatal error: Call to undefined method MDB2_Error::execute()
エラーが発生しております。解決が出来ず半日が経ち、困っております。
どなたかご教授願います。内容は会員登録確認画面から(データベース登録)会員確定画面の際にうまく機能していません。よろしくお願いします。
tourokucheck.php

//DB接続
$db = MDB2::connect(DNS);
if (PEAR::isError($db)) {
die($db->getMessage());
}
//プレースホルダで SQL 作成
$sql = "SELECT COUNT(*) AS CNT FROM USERS WHERE ID = ? ;";
//var_dump($sql);
//パラメーターの型を指定
$stmt = $db->prepare($sql, array('text'));
//パラメーターを渡して SQL 実行
$rs = $stmt->execute(array($id));
//var_dump($rs);
while ($row = $rs->fetchRow(MDB2_FETCHMODE_ASSOC)) {
$count = $row['cnt'];
}
$db->disconnect()
?>

touroku_submit.php
<?php
require_once 'MDB2.php';
require_once("function.php");
session_start();
header("Content-type: text/html; charset=utf-8");


//CSRF チェック
if ($_SESSION['token'] != $_POST['token']) {
$_SESSION = array();
session_destroy();
session_start();

$_SESSION["error_status"] = 2;
header("HTTP/1.1 301 Moved Permanently");
header("Location: login.php");
exit();
}

//エラー情報のリセット
$_SESSION["error_status"] = 0;

$name = $_POST['full_name'];
$name_kana = $_POST['furigana'];
$birthday = ($_POST['birthday']);
$postcode = ($_POST['postcode']);
$address = ($_POST['address']);
$mail = $_POST['mail'];
$telephone = $_POST['telephone'];
$password = $_POST["password1"];

$salt = get_salt();

$url_pass = get_url_password();

$hash = strechedPassword($salt, $password);

//DB接続
$db = MDB2::connect(DNS);
if (PEAR::isError($db)) {
die($db->getMessage());
}

//プレースホルダで SQL 作成
$sql = "INSERT INTO USERS (name,name_kana,birth,postcode,address,MAILADDRESS,telephone,PASSWORDSALT,TEMP_PASS,LAST_CHANGE_PASS_TIME,RESISTER_TIME) ";
var_dump($sql);
$sql .= " VALUES (?,?,?,?,?,?,?,?,?,?,?);";
//パラメーターの型を指定
$stmt = $db->prepare($sql, array('text','text','text','text','text','text','text','text','text','timestamp','timestamp'));
//パラメーターを渡して SQL 実行
echo 'name:';
$res = $stmt->execute($name,$name_kana,$birth,$postcode,$address,$mail,$telephone,$password,$salt,$hash,$url_pass,date('Y-m-d H:i:s'),date('Y-m-d H:i:s'));
//var_dump($res);
//ID重複の可能性があるのでチェック
if (PEAR::isError($res)) {
$db->disconnect();

$_SESSION["error_status"] = 4;
header("HTTP/1.1 301 Moved Permanently");
header("Location: register.php");
exit();
}

$db->disconnect();

//ユーザーにメールの送信

//メールヘッダーインジェクション対策
$mail = str_replace(array("\r\n","\r","\n"), "", $mail);

$url = "https://" . SERVER . "/register_confirm.php?" . $url_pass;

$msg = "以下のアドレスからアカウトを有効にしてください。" . PHP_EOL;
$msg .= "アドレスの有効時間は10分間です。" . PHP_EOL;
$msg .= "有効時間後はパスワードのリセットを行ってください。" . PHP_EOL . PHP_EOL;
$msg .= $url;
mb_language("ja");
mb_internal_encoding("UTF-8");
mb_send_mail($mail, "ユーザー登録", $msg, " From: " . SENDER_EMAIL);

?>

A 回答 (2件)

execute()でエラーが出てるようでしたら、$res = $stmt->execute(・・・ 以降にある


if (PEAR::isError($res)) {} 内で以下をecho出力して何かヒントとなる情報は出てきませんか?

$res->getMessage();
$res->getDebugInfo();
    • good
    • 0
この回答へのお礼

何とか解決することが出来ました。一つずつvar_dumpで確認して理解することが出来ました。

お礼日時:2016/01/17 00:41

>エラーが発生しております。

解決が出来ず半日が経ち、困っております。

エラー行番号でていませんか?
該当行およびその前後はどうなっていますか?

connectの際"DNS"の定数をしていしているように見えますが
typoだとは思いますが、一般に指定するのはData Source NameなのでDSNです。
そのあたり細かい記載ミスがないかをチェックしてみてはどうでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!