前提・実現したいこと
前回と同様に、DBの書き換えです。
'money'の欄を書き換えたいです。
発生している問題・エラーメッセージ
実行 を押してもDBに反映されない。
該当のソースコード
php
1<?php 2session_start(); 3include_once 'dbconnect.php'; 4if(!isset($_SESSION['user'])) { 5 header("Location: index.php"); 6} 7 8// ユーザーIDからユーザー名を取り出す 9$query = "SELECT * FROM users WHERE user_id=".$_SESSION['user'].""; 10$result = $mysqli->query($query); 11 12$result = $mysqli->query($query); 13if (!$result) { 14 print('クエリーが失敗しました。' . $mysqli->error); 15 $mysqli->close(); 16 exit(); 17} 18 19// ユーザー情報の取り出し 20while ($row = $result->fetch_assoc()) { 21 $username = $row['username']; 22 $email = $row['email']; 23 $money = $row['money']; 24 $user_id = $row['user_id']; 25} 26 27// データベースの切断 28$result->close(); 29 30// データベースに接続するために必要なデータソースを変数に格納 31 // mysql:host=ホスト名;dbname=データベース名;charset=文字エンコード 32$dsn = 'mysql:host=mysql1.php.xdomain.ne.jp;dbname=rara22_001;charset=utf8'; 33 34 // データベースのユーザー名 35$user = 'rara22_onoue'; 36 37 // データベースのパスワード 38$password = 'onoue622'; 39 40// tryにPDOの処理を記述 41try { 42 43 // PDOインスタンスを生成 44 $dbh = new PDO($dsn, $user, $password); 45 46// エラー(例外)が発生した時の処理を記述 47} catch (PDOException $e) { 48 49 // エラーメッセージを表示させる 50 echo 'データベースにアクセスできません!' . $e->getMessage(); 51 52 // 強制終了 53 exit; 54 55} 56 57$genzan = $money; 58$genzan = $genzan - 100; 59 60echo "$money"; 61echo "$genzan"; 62echo "$user_id"; 63 64 65if($money < 100){ 66echo "残額が足りません。"; 67} else { 68 69// UPDATE文を変数に格納 70$sql = "UPDATE users SET money = :money WHERE user_id = :id"; 71 72// 更新する値と該当のIDは空のまま、SQL実行の準備をする 73$stmt = $dbh->prepare($sql); 74 75// 更新する値と該当のIDを配列に格納する 76$params = array(':money' => '$genzan', ':id' => '$user_id'); 77 78// 更新する値と該当のIDが入った変数をexecuteにセットしてSQLを実行 79$stmt->execute($params); 80 81// 更新完了のメッセージ 82echo '更新完了しました'; 83} 84?> 85
できていること
DBへの接続、$genzan の計算
おそらく、update のどこかがおかしいのだと思いますが、エラーは特に出ていないため、わかりません。
シンタックスエラーになるか 0と一致比較してるんだろうなきっと
どこがどのようにエラーになっているのか教えていただけますか?
とりあえず、変数展開とかPHPの基本を覚えてから問題にとりかかってください
とりま https://teratail.com/questions/234518 と同じ理由です
本当に同じ理由なのでしょうか?
ソース自体も変えてますし、DB接続が前回はできていませんでしたが今回はできています。わからないからと言って、適当な回答をしないでください。
php.iniでエラー出るように設定してます?何も出ないはずないです。
目隠しで車を運転するようなものです。
設定しましたが、何も出ませんでした。。。
まずPHPで構築するときは、php.iniでエラー表示するようにしてください。準備運動無しで海に行っても溺れるだけです。
display_errors = On にした後、必ずApacheやNginxなどを再起動すること。
そして未定義の関数やわざと間違えて、ちゃんとエラーメッセージがブラウザから表示されるか確かめてから取り掛かってください。
回答2件
あなたの回答
tips
プレビュー