QA@IT

【PHP+Mysql】Call to a member function beginTransaction() on a non-objectについて

5401 PV

上記タイトルのエラーが出たのですが、どのように直せばよいか分からず困っています。
プログラムの内容としては、前のファイルで現在のid=1を呼び出して更新。
このファイルではその値を受け取りMysqlのデータをUPDATEします。
セッションの値は1です。

<?php
session_start();
?>
<!DOCTYPE html>
<html lang="ja">
<head><meta charset="utf-8"><title></title></head>
<body>
<?php
require_once('MYDB.php');
$pdo = db_connect;

$id = $_SESSION['id'];

try{
    $pdo ->beginTransaction();
    $sql = "UPDATE member SET last_name = :last_name, first_name = :first_name, age = :age
    WHERE id = :id";
    $stmh = $pdo ->prerare($sql);
    $stmh ->bindValue(':last_name', $_POST['last_name'], PDO::PARAM_STR);
    $stmh ->bindValue(':first_name', $_POST['first_name'], PDO::PARAM_STR);
    $stmh ->bindValue(':age', $_POST['age'], PDO::PARAM_INT);
    $stmh ->bindValue(':id', $id, PDO::PARAM_INT);
    $sthm ->excecute();
    $pdo ->commit();
    print "データを" . $stmh ->rowCount() . "件、更新しました。";
}catch(PDOException $Exception){
    $pdo ->rollBack();
    print 'エラー:' . $Excepion ->getMessage();
}

$_SESSION = array();
session_destry();
?>
</body>
</html>

回答

db_connectMYDB.php で定義されている関数ですか?

であれば

require_once('MYDB.php');
$pdo = db_connect();

です。

編集 履歴 (0)
  • 修正を入れましたが、同じエラーが出ます。 -
  • db_connect() 関数が PDO のインスタンスを返していないからだと思います。 -
  • ごめんなさい、上記の文かなりのスペルミスがあり直しを入れたところ正常に動作しました(汗)

    迅速な回答本当に助かりました!
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。