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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Q&A

1回答

524閲覧

PHPでデータベースの挿入がうまくできない

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

0グッド

0クリップ

投稿2020/02/27 02:55

###PHPで会員登録の掲示板サイトを作ろうと思っています。
データベースを取り込み、データベースにINSERTするとコードを記述したのですが、試しにフォームを入力しても、データベースに挿入されていません。
しかしコードを見返してみても原因を突き止めることができません。
よろしければ解決策をご教授ください。
また、check.phpで入力事項の確認をするのですが、画像のみがうまく表示されず、それについても困っています。これについてもお教えいただけたら幸いです.

###試したこと
check.phpの9行目からがデータベースの挿入文であり、$_POSTに要素が入っていた場合のみ起動するようにしています。
empty($_POST)がtrueであった場合に文字列を表示するif文を描いてみたら、文字列が出力されたので$_POSTがそもそも空であるということを自分で予測しました。

index.php

php

1<?php session_start() ?> 2 3<?php if(!empty($_POST)){ 4 if($_POST['name']==""){ 5 $error['name']="blank";} 6 if($_POST['email']==""){ 7 $error['email']="blank";} 8 if(strlen($_POST["passward"])<4){ 9 $error['passward']="length"; 10 } 11 if($_POST['passward']==""){ 12 $error['passward']="blank"; 13 } 14 $fileName=$_FILES['images']['name']; 15 if(!empty($fileName)){ 16 $ext= substr($fileName,-3); 17 if($ext != 'jpg'&&$ext !='gif'){ 18 $error['image']='type'; 19 } 20 } 21 if(empty($error)){ 22 $image=date('YmdHis').$_FILES['image']['name']; 23 move_uploaded_file($_FILES['image']['tmp_name'],"../member_picture/".$image); 24 25 $_SESSION['join']=$_POST; 26 header("Location:check.php"); 27 exit();} 28} 29if(isset($_REQUEST['action'])&&$_REQUEST['action']=='write'){ 30 $_POST=$_SESSION['join']; 31 $error['rewrite']=757; 32} 33 34 ?> 35 36 37 38<!DOCTYPE html> 39<html> 40<head> 41<link rel="stylesheet" href="../css/style.css"> 42<meta charest="UTF-8"> 43<title>簡易版ツイッター会員登録ページ</title> 44</head> 45<body class="index"> 46<header> 47<h1>会員登録</h1> 48</header> 49<main> 50<p>次のフォームに必要事項をご記入ください</p> 51<form action="" method="POST" enctype="multiple/form-data"> 52 <dl> 53 <dt>ニックネーム<span class="required">必須</span></dt> 54 <dd><input type="text" name="name" size="35" value="<?php echo isset($_POST['name'])? htmlspecialchars($_POST['name'],ENT_QUOTES):"名前";?>"> 55 <?php if(isset($_POST['name'])&&$error['name']=="blank"):?> 56 <p class="error">*ニックネームを入力してください</p> 57 <?php endif ?></dd> 58 <dt>メールアドレス<span class="required">必須</span></dt> 59 <dd><input type="text" name="email" size="35" value="<?php echo isset($_POST['email'])? htmlspecialchars($_POST['email'],ENT_QUOTES):"メールアドレス";?>"> 60 <?php if(isset($_POST['email'])&&$error['email']=='blank'):?> 61 <p class="error">*メールアドレスを入力してください</p> 62 <?php endif ?> 63 </dd> 64 <dt>パスワード<span class="required">必須</span></dt> 65 <dd><input type="passward" name="passward" size="10" maxlength="20" value="<?php echo isset($_POST['passward'])?htmlspecialchars($_POST['passward'],ENT_QUOTES):"パスワード";?>"> 66 <?php if(isset($_POST['passward'])&&$error['passward']=='blank'):?> 67 <p class="error">*パスワードを入力してください</p> 68 <?php endif ?> 69 <?php if(isset($_POST['length'])&&$error['passward'=='length']):?> 70 <p class="error">パスワードは4文字以上で入力してください</p> 71 <?php endif ?> 72 </dd> 73 74 <dt>写真など</dt> 75 <dd><input type="file" name="image" size="35"></dd> 76 <?php if(isset($error['image'])&&$error['image']=='type'):?> 77 <p class="error">*写真などは「.jpg」、または「.gif」の画像を指定してください</p> 78 <?php endif ?> 79 <?php if(!empty($error)):?> 80 <p class="error">恐れ入りますがもう一度画像を指定してください</p> 81 <?php endif ?> 82 83 </dl> 84 <input type="submit" value="入力内容を確認する"> 85</form> 86 87</main> 88</body> 89</html>

check.php

php

1<?php session_start(); 2require('../dbconnect.php'); 3 4if(!isset($_SESSION['join'])){ 5 header('Location:index.php'); 6 exit(); 7} 8 9if(!empty($_POST)){ 10 $statement=$db->prepare('INSERT INTO members SET name=?,email=?,passward=?,picture=?,created=NOW()'); 11 echo $ret = $statement->execute($_SESSION['join']['name'],$_SESSION['join']['email'],shal($_SESSION['join']['passward']), $_SESSION['join']['image']); 12 unset($_SESSION['join']); 13 14 header('Location:thanks.php'); 15 exit(); 16} 17?> 18<!DOCTYPE html> 19<html> 20<head> 21<link rel="stylesheet" href="../css/style.css"> 22<meta charest="UTF-8"> 23<title>簡易版ツイッター会員登録ページ</title> 24</head> 25<body class="index"> 26<header> 27<h1>会員登録</h1> 28</header> 29<main> 30<p>入力事項の確認をしてください</p> 31<form action="" method="POST" enctype="multiple/form-data"> 32 <dl> 33 <dt>ニックネーム</dt> 34 <dd><?php echo htmlspecialchars($_SESSION['join']['name'])?></dd> 35 <dt>メールアドレス</dt> 36 <dd><?php echo htmlspecialchars($_SESSION['join']['email'])?></dd> 37 <dt>パスワード</dt> 38 <dd><?php echo htmlspecialchars($_SESSION['join']["passward"])?></dd> 39 <dt>写真など</dt> 40 <dd> 41 <img src="../member_picture/<?php echo htmlspecialchars($_SESSION['join']['image']);?>"> 42 </dd> 43 </dl> 44 <div><a href="index.php?action=rewrite">書き直す</a></div>|<input type="submit" value="登録する"> 45</form> 46</main> 47</body> 48</html>

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

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

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

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

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

guest

回答1

0

dbconnect.phpがどうなっているかわかりませんが
pdoの接続ならtry-catchでエラーメッセージを表示させるところからです

投稿2020/02/27 04:13

yambejp

総合スコア114779

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

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

yambejp

2020/02/27 04:15 編集

try{ $dsn = 'mysql:host=localhost; dbname=mydb;charset=utf8;'; $pdo = new PDO($dsn, $user,$password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql="update ・・・・"; $stmt = $pdo->query($sql); }catch(PDOException $e){ die($e->getMessage()); }
退会済みユーザー

退会済みユーザー

2020/02/27 04:24

ご回答ありがとうございます。 dbconnect.phpは次のようになっています。 何か原因となるところなどはありますか? <?php try{ $db=new PDO('mysql:dbname;twitter;host=localhost:3306' ,'root','root'); }catch(PDOEXCEPTION $e){ echo "DB接続エラー".$e->getMessage(); } ?>
yambejp

2020/02/27 04:28

回答の補足にも書きましたがATTR_ERRMODEの指定が必要です
退会済みユーザー

退会済みユーザー

2020/02/27 06:28 編集

dbnameの与え方が変、そしてnewのうしろがなぜか全角空白。動かしていないコードではないか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問