データベースの更新をしたいのですが、更新できずに困っています。
ご指摘頂ければ幸いです。
下記のfunction.phpから下は別ファイルになります。
php
1require('function.php'); 2 3debug('プロフィール編集ページ'); 4debugLogStart(); 5 6require('auth.php'); 7 8 9//DBからユーザデータ取得 10$dbFormData = getUser($_SESSION['user_id']); 11var_dump($dbFormData); 12//var_dump(settype($dbFormData['id'],"int")); 13 14 15debug('取得したユーザー情報:'.print_r($dbFormData,true)); 16 17if(!empty($_POST)){ 18 debug('POST送信があります'); 19 debug('POST情報:'.print_r($_POST,true)); 20 21 $username = $_POST['username']; 22// $tel = $_POST['tel']; 23// $zip = (!empty($_POST['zip'])) ? $_POST['zip'] : 0; 24// $addr = $_POST['addr']; 25// $age = $_POST['age']; 26// $email = $_POST['email']; 27// 28 if(empty($err_msg)){ 29 debug('バリデーションチェックがあります'); 30 global $dbFormData; 31 try{ 32 $dbh = dbConnect(); 33 $sql = 'UPDATE users SET name = :name WEHERE id = :id'; 34 $data = array(':name' => $username,':id' => $dbFormData['id']); 35 $result = queryPost($dbh,$sql,$data); 36 37 //クエリが成功の場合 38 var_dump($data); 39 var_dump($result); 40 if($result){ 41 global $dbFormData; 42 debug('クエリ成功'); 43 debug('マイページに移動します'); 44// header("Location:mypage.php"); 45 debug('ユーザ変更情報'.print_r($dbFormData,true)); 46 }else{ 47 debug('クエリに失敗しました'); 48 $err_msg['common'] = MSG08; 49 } 50 51 52 }catch(Exception $e){ 53 $err_msg['common'] = MSG07; 54 } 55 } 56} 57 58function.php 59 60function dbConnect(){ 61 62 $dsn = 'mysql:dbname=practice;host=localhost;charset=utf8'; 63 $user = 'root'; 64 $password = 'root'; 65 $options = array( 66 PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT, 67 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 68 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, 69 ); 70 71 $dbh = new PDO($dsn,$user,$password,$options); 72 return $dbh; 73} 74//SQL実行関数 75function queryPost($dbh, $sql, $data){ 76 //クエリー作成 77 $stmt = $dbh->prepare($sql); 78 //プレースホルダに値をセットし、SQL文を実行 79 $result = $stmt->execute($data); 80 return $stmt; 81 debug('クエリポストの結果です'.$result); 82 if(!empty($result)){ 83 return $result; 84 }else{ 85 return $result; 86 debug('$resultが空です'); 87 } 88} 89function getUser($u_id){ 90 debug('ユーザー情報を取得します'); 91 92 try{ 93 $dbh = dbConnect(); 94 $sql = 'SELECT * FROM users WHERE id = :u_id'; 95 $data = array(':u_id' => $u_id); 96 $result = queryPost($dbh,$sql,$data); 97 98 if($result){ 99 debug('クエリ成功'); 100 }else{ 101 debug('クエリ失敗'); 102 } 103 }catch(Exception $e){ 104 error_log('エラー発生:'.$e->getMessage()); 105 } 106 var_dump($result); 107 return $result->fetch(PDO::FETCH_ASSOC); 108} 109
試した事
1 $dbFormDataをsettype()を使い、int型に変更。 => 変更されませんでした。
2 MAMPから直接sql文を流した場合 => 更新される。
3 $sql = 'UPDATE users SET name = :name WEHERE id = :id';を id = 1 などに指定。 => 変更されませんでした。
回答2件
あなたの回答
tips
プレビュー