マンガでよめる痔のこと・薬のこと

すみません、前回教えて頂きました内容にて、MySQLのデータを
PHPで表示しますところまでは出来ましたけれど、そのMySQLの
データを変更しますPHPにて、結果変数のバインドの箇所にて
値が取得出来ませんです。
ネット情報のコピペですので、PHPのバージョン違いなどで
記述方法が異なりますような気もしますけれど、お詳しいかた
お願いしたいと思います。
変数($id,$G_CODE,$DELETED_FLAG)に格納出来ません様子で、
その変数の箇所に文字列を入れますとその文字列がPHP上で
表示されますので、やはり変数への格納が問題なのかと
思っております。


<?php

header("Content-type: text/html; charset=utf-8");

require_once("init.php");

if(empty($_POST)) {
echo "<a href='index.php'>index.php</a>←こちらのページからどうぞ";
exit();
}else{
if (!isset($_POST['id']) || !is_numeric($_POST['id']) ){
echo "IDエラー";
exit();
}else{
//プリペアドステートメント
$stmt = mysql_query("SELECT * FROM テーブル名 WHERE id=?");
if ($stmt) {
//プレースホルダへ実際の値を設定する
$stmt->bind_param('i', $id);
$id = $_POST['id'];

//クエリ実行
$stmt->execute();

//結果変数のバインド
$stmt->bind_result($id,$G_CODE,$DELETED_FLAG);
// 値の取得
$stmt->fetch();

//ステートメント切断
$stmt->close();
}
}
}

質問者からの補足コメント

  • つらい・・・

    入力文字数オーバーです…
    以下のようにしましたが
    SQL更新されませんまま処理終了して…

    try{
    $dbh = new PDO($dsn, $user, $password);
    print('接続に成功しました。<br>');

    $stmt = $dbh->prepare('UPDATE テーブル名 SET G_CODE =:G_CODE, DELETED_FLAG =:DELETED_FLAG WHERE id = :id');
    $stmt->execute(array(':G_CODE' => $_POST['G_CODE'], ':DELETED_FLAG' => $_POST['DELETED_FLAG'], ':id' => $_POST['id']));

    echo "略";

    } catch (Exception $e) {

    }

    ?>

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/06/25 16:58

A 回答 (2件)

いろいろとだめ・・


mysql_queryはもう使っちゃだめです
意図としてはpdoを使いたいのではないのですか?
pdoならexecuteしたらfetchAllしてください
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございました。
WHEREの後のidがNullでした…
お恥ずかしい…

お礼日時:2020/06/25 18:10

プリペアドステートメントの記述が間違っています。



下記ページの例を見ればわかると思います。

・bind_param
https://www.php.net/manual/ja/mysqli-stmt.bind-p …
    • good
    • 0
この回答へのお礼

ありがとうございます。
ちょっと難しいページですけれど、頑張ります…

お礼日時:2020/06/25 18:10

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング