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

上記のエラーがでます。
色々試してみましたが、どうしても解決できそうもありません。

if(PEAR::isError($stmt)){
die($stmt->getMessage());
}

これで調べてみたところ、

MDB2 Error: syntax error

このように表示されました。

以下の記述でおかしいところがあれば、ご指摘頂ければと思います。
また、そういった問題でなくエラーなのであれば、どのような原因が考えられるか教えてください。
よろしくお願いします。



//DB接続
$db = MDB2::connect($GLOBALS['DNS']);

//プレースホルダで SQL 作成
$sql = "SELECT COUNT(*) AS CNT FROM AUTO_LOGIN WHERE TOKEN = ? AND REGISTRATED_TIME >= ?;";

//パラメーターの型を指定
$stmt = $db->prepare($sql, array("text", "timestamp"));

if(PEAR::isError($stmt)){
die($stmt->getMessage());
}

//2週間前の日付を取得
$date = new DateTime("- 14 days");

//パラメーターを渡して SQL 実行
$rs = $stmt->execute(array($token, $date->format("Y-m-d H:i:s")));

while ($row = $rs->fetchRow(MDB2_FETCHMODE_ASSOC)) {
$count = $row['cnt'];
}

$db->disconnect();

A 回答 (1件)

MDB2必須なのでしょうか?PDOではダメなの?


「$GLOBALS['DNS']」がどうなっているかもわからないので・・・
データベースの接続だと普通はDSNのような気もするし・・・
プレイスホルダーの処理も
TOKENに「text」という文字の一致をチェック
REGISTRATED_TIME に"timestamp"という文字以上?で比較
しているように見えますが、本当にやりたいこととあっているのでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
このコードですが、MDB2が入っているヘテムルサーバーでは正常に動作しているのですが、MDB2が入っていないiclastaに移行したら上記のようなエラーが表示されました。
MDB2を入れたのですが、それでも正常に動作せず困り果てておりました。
そうですね、PDOに変更しようと思います。
ありがとうございます。

お礼日時:2016/03/04 23:54

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