質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

257閲覧

クエリ登録することができない

twsoccer15

総合スコア12

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2020/03/01 08:16

前提・実現したいこと

ユーザー登録を実装しているところなんですが、クエリ実行するとクエリ失敗のデバックが返されます。 何が原因でしょうか。お手数ですがご回答よろしくお願い致します。

発生している問題・エラーメッセージ

[01-Mar-2020 08:13:31 UTC] デバック:「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「 [01-Mar-2020 08:13:31 UTC] デバック:ユーザー登録ページ [01-Mar-2020 08:13:31 UTC] デバック:「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「「 [01-Mar-2020 08:13:31 UTC] デバック:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 画面表示処理開始 [01-Mar-2020 08:13:31 UTC] デバック:セッションID:20fm76qjo463nfgdattduhvmg4 [01-Mar-2020 08:13:31 UTC] デバック:セッション変数の中身:Array ( ) [01-Mar-2020 08:13:31 UTC] デバック:現在の日時タイムスタンプ:1583050411 [01-Mar-2020 08:13:31 UTC] デバック:クエリ成功。 [01-Mar-2020 08:13:31 UTC] デバック:クエリ失敗しました。 [01-Mar-2020 08:13:31 UTC] デバック:失敗したSQL:PDOStatement Object ( [queryString] => INSERT INTO users (email,password,login_time,create_date) VALUES(:email,:password,:login_time,:create_date) )

該当のソースコード

//例外処理 try { // DBへ接続 $dbh = dbConnect(); // SQL文作成 $sql = 'INSERT INTO users (email,password,login_time,create_date) VALUES(:email,:password,:login_time,:create_date)'; $data = array(':email' => $email, ':password' => password_hash($pass, PASSWORD_DEFAULT), ':login_time' => date('Y-m-d H:i:s'), ':create_date' => date('Y-m-d H:i:s') ); // クエリ実行 $stmt = queryPost($dbh, $sql, $data); // クエリ成功の場合 if($stmt){ //ログイン有効期限(デフォルトを1時間とする) $sesLimit = 60*60; // 最終ログイン日時を現在日時に $_SESSION['login_date'] = time(); $_SESSION['login_limit'] = $sesLimit; // ユーザーIDを格納 $_SESSION['user_id'] = $dbh->lastInsertId(); debug('セッション変数の中身:'.print_r($_SESSION,true)); header("Location:mypage.php"); //マイページへ } } catch (Exception $e) { error_log('エラー発生:' . $e->getMessage()); $err_msg['common'] = MSG07; } } } } } ?>
function dbConnect(){ //DBへの接続準備 $dsn = 'mysql:dbname=freemarket;host=localhost;port=3306;charset=utf8'; $user = 'root'; $password = 'root'; $options = array( //SQL実行時失敗時にはエラーコードのみ設定 PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT, //デフォルトフェッチモードを連想配列形式に設定 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, //バッファードクエリを使う(一度に結果セットを全てを取得し、サーバー負荷を軽減) //SELECTで得た結果に対してもrowcountメソッドを使えるようにする PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, ); // PDOオブジェクト生成(DBへ接続) $dbh = new PDO($dsn, $user, $password, $options); return $dbh; } //SQL実行関数 // function queryPost($dbh, $sql, $data){ // //クエリー作成 // $stmt = $dbh->prepare($sql); // //プレースホルダに値をセットし、SQL文を実行 // $stmt->execute($data); // return $stmt; // } function queryPost($dbh, $sql, $data){ //クエリー作成 $stmt = $dbh->prepare($sql); //プレースホルダーに値にセットし、SQLを実行 if(!$stmt->execute($data)){ debug('クエリ失敗しました。'); debug('失敗したSQL:'.print_r($stmt,true)); $err_msg['common'] = MSG07; return 0; } debug('クエリ成功。'); return $stmt; } function getUser($u_id){ debug('ユーザー情報を取得します。'); //例外処理 try{ //DBへ接続 $dbh = dbConnect(); //SQL文生成 $sql = 'SELECT * FROM users WHERE id = :u_id AND delete_flg = 0'; $data = array(':u_id' => $u_id); //クエリ実行 $stmt = queryPost($dbh, $sql, $data); //クエリ結果のデータを1レコード返却 if($stmt){ return $stmt->fetch(PDO::FETCH_ASSOC); }else{ return false; } } catch (Exception $e){ error_log('エラー発生:'. $e->getMessage()); } //return $stmt->fetch(PDO::FETCH_ASSOC); } function getProduct($u_id, $p_id){ debug('商品情報を取得します。'); debug('ユーザーID: '.$u_id); debug('商品ID:'.$p_id); //例外処理 try{ //DB接続 $dbh =dbConnect(); //SQL文作成 $sql = 'SELECT * FROM product WHERE user_id = :u_id AND id = :p_id AND delete_flg = 0'; $data = array(':u_id' => $u_id, ':p_id' => $p_id); //クエリ実行 $stmt = queryPost($dbh, $sql, $data); if($stmt){ //クエリ結果のデータを1レコード返却 return $stmt->fetch(PDO::FETCH_ASSOC); }else{ return false; } } catch (Exception $e) { error_log('エラー発生:' . $e->getMessage()); } } function getProductList($currentMinNum = 1, $category, $sort, $span = 20){ debug('商品情報を取得します'); //例外処理 try{ // DBへ接続 $dbh = dbConnect(); //件数用のSQL文作成 $sql ='SELECT id FROM product'; if(!empty($category)) $sql .= 'WHWRE category_id = '.$category; if(!empty($sort)){ switch($sort){ case 1: $sql .= ' ORDER BY price ASC'; break; case 2: $sql .= ' ORDER BY price DESC'; break; } } $data = array(); //クエリ実行 $stmt = queryPost($dbh, $sql, $data); $rst['total'] = $stmt->rowCount(); //総レコード数 $rst['total_page'] = ceil($rst['total']/$span); //総ページ数 if(!$stmt){ return false; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/03/01 08:24

例外発生パターンじゃなかったら対象のオブジェクトからエラー情報が取れますがそれも確認、追記してください
m.ts10806

2020/03/01 08:55

前の質問で解決できることでは。 にしても未解決のまま放置している質問多いですね。 解決する気ないと捉えられますよ。(少なくとも私はそう感じた)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問