PHPにて、データの更新をしたいです。
ある企業の課題で、phpを使ってデータの管理画面を作成しております。
データの登録(INSERT)はできたのですが、更新(UPDATE)ができません。
発生している問題・エラーメッセージ
Fatal error: Uncaught Error: Call to a member function query() on string in /var/www/html/edit_news.php:156 Stack trace: #0 {main} thrown in /var/www/html/edit_news.php on line 156
該当のソースコード
php
1<?php 2 $sql = null; 3 $res = null; 4 $dbh = null; 5 try { 6 $dbh = 'mysql:dbname=test_db;host=133.167.38.105;'; 7 $user = 'test'; 8 $password = 'password'; 9 10 $PDO = new PDO($dbh, $user, $password); 11 $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 12 13 $day = $_POST['day']; 14 $title = $_POST['title']; 15 $kind = $_POST['kind']; 16 $body = $_POST['body']; 17 18 19 $PDO->query("SET NAMES utf8;"); 20 $sql = "UPDATE news SET (day, title, kind, body) VALUES (:day, :title, :kind, :body) WHERE id = $page"; 21 $res = $dbh->query($sql); 22 23 echo "<p>day: ".$day."</p>"; 24 echo "<p>title: ".$title."</p>"; 25 echo "<p>kind: ".$kind."</p>"; 26 echo "<p>body: ".$body."</p>"; 27 echo '<p>で登録しました。</p>'; 28 } catch (PDOException $e) { 29 exit('データベースに接続できませんでした。' . $e->getMessage()); 30 } 31 ?>
こちらが登録完了画面です。
ちなみに156行目は
php
1$res = $dbh->query($sql);
こちらの部分でして、ここが悪いことは分かっているのですが具体的にどこが悪いのか分かりません。
試したこと
$dbhの変数の初期化を行いました。
エラー文的に、おそらくnullか何も値が入っていない状態でsqlを実行しようとしているような気がしています。
補足情報(FW/ツールのバージョンなど)
フレームワークわ使っておらず、生の文章で書いております。
どうか、お願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/30 14:33