###前提・実現したいこと
PDOを使ってデータベースに接続し、テーブルにデータを挿入したい
###発生している問題・エラーメッセージ
date.htmlでsubmitすると、actionで指定したview3.phpにアクセスされるが、ボディーどころか、ヘッダーも動作しない。ヘッダー部分は絶対パスで、ボディーは白紙。 なお、ターミナルからtableを確認するも、データに変化はない。 普段はターミナルからDBのmysqlにアクセスできて、テーブルの作成やデータの挿入などは行えている
###該当のソースコード
HTML
1<html> 2<head> 3<title>test of SQL</title> 4<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5</head> 6<body> 7<h1>SQLのテスト</h2> 8 9<form name="form1" method="post" action="view3.php"> 10氏:<br> 11<input type="text" name="last_name"> 12<br> 13名:<br> 14<input type="text" name="first_name"> 15<br> 16年齢:<br> 17<input type="text" name="age"> 18<br> 19<input type="submit" value="送信"> 20</form> 21 22</body> 23</html> 24
php
1<html> 2<head> 3<title>test of SQL</title> 4</head> 5<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 6<body> 7<h1>test</h1> 8<?php 9$db_user = "レンタルサーバーのcPanelusername_username"; 10$db_pass = ""; 11$db_host = "localhost"; 12$db_name = "レンタルサーバーのcPanelusername_dbname"; 13$db_type = "mysql"; 14 15$dsn = "$db_type:host=$db_host;dbname=$db_name;charset=utf8"; 16try { 17 $pdo = new PDO($dsn, $db_user, $db_pass); 18 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 19 $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 20 ptint "接続しました<br>"; 21}catch(PDOException $Exception){ 22 die('エラー:'.$Exception->getMessage()); 23} 24 25try { 26 27 $pdo->beginTransaction(); 28 $sql = "insert into member (last_name, first_name, age) values(:last_name, :first_name, :age)"; 29 $stmh = $pdo->prepare($sql); 30 $stmh->bindValue(':last_name', $_POST['last_name'], PDO::PARAM_STR); 31 $stmh->bindValue(':first_name', $_POST['first_name'], PDO::PARAM_STR); 32 $stmh->bindValue(':age', $_POST['age'], PDO::PARAM_INT); 33 $stmh->execute(); 34 $pdo->commit(); 35 36 print "データを" .$stmh->rowCount() ."件、挿入しました<br>"; 37}catch(PDOException $Exception){ 38 39 $pdo->rollBack(); 40 print "error" .$Exception->getMessage(); 41} 42 43?> 44</body> 45</html> 46
###試したこと
・php文だけを抜いて、ボディーの中を<h1>test</h1>だけにしてみたところ、ヘッダーもボディーも正しく表示された。
・ホスト名を、普段ターミナルからmysqlにアクセスする時と同じものを試した→変化なし
・トランザクション処理の影響を考え、二つ目のTRY-CATCH構文を消して試した→変化なし
###補足情報(言語/FW/ツール等のバージョンなど)
海外のレンタルサーバー(Bluehost)を使用。
普段はターミナルから、上記のユーザー名、パスワード、データベース名でアクセスできる。
エンジンはInnoDBを使用。
PHP 7.1.11 (cli) (built: Nov 7 2017 04:14:32) ( NTS )を使用。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/27 11:15
2017/11/27 11:40
2017/11/27 11:57