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

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

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

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

PHP

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

Q&A

解決済

1回答

1525閲覧

PHPの2回データーベースの利用についての質問です。

manamana620

総合スコア14

MySQL

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

PHP

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

0グッド

0クリップ

投稿2016/03/19 20:34

編集2016/03/19 23:57

PHP

1<!DOCTYPE html> 2<html xmlns="http://www.w3.org/1999/xhtml"> 3<head> 4 <meta charset="utf-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6 <title>動画広告の募集</title> 7 <meta name="description" content="無料動画!"> 8 <meta name="keywords" content="動画学習"> 9 10 11</head> 12<body> 13 14 <div id="wrapper"> 15 <nav class="navbar navbar-default navbar-cls-top " role="navigation" style="margin-bottom: 0"> 16 17 <div class="panel-body"> 18 <!-- Single button --> 19 <div class="summernote container"> 20 <div class="row"> 21 <div class="span12"> 22 <h2>動画の投稿</h2> 23 </div> 24 </div> 25 <div class="row"> 26 <?php 27 28 29 30 try 31 { 32 33 require_once('config.php'); 34 require_once('function.php'); 35 36 37 $title=$_GET['title']; 38 39 40 41 42 $dbh=new PDO(DSN,DB_USER,DB_PASSWORD); 43 $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 44 $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 45 46 $sql='select * from douga_table where title=?'; 47 $stmt=$dbh->prepare($sql); 48 $data[]=$title; 49 50 $stmt->execute($data); 51 52 $rec=$stmt->fetch(PDO::FETCH_ASSOC); 53 54 $dbh=null; 55 56 print $rec['category'] ; 57 print $rec['category_juni'] ; 58 print $rec['title'] ; 59 print $rec['you_tube']; 60 print $rec['naiyou']; 61 62 63 64 } 65 catch (Exception $e) 66 { 67 print '取得に失敗しました。ただいま障害により大変ご迷惑をお掛けしております。'; 68 exit(); 69 } 70 71 ?> 72 73 74 </div> 75 </div> 76 77 <script type="text/javascript"> 78 $(document).ready(function() { 79 $('#summernote').summernote({ 80 height: "500px" 81 }); 82 }); 83 var postForm = function() { 84 var content = $('textarea[name="content"]').html($('#summernote').code()); 85 } 86 </script> 87 88 </div> 89 </div> 90 </div> 91 <div class="col-md-4 col-sm-12 col-xs-12"> 92 <div class="panel panel-primary text-center"> 93 <div class="panel-body"> 94 <?php 95 96 97 98 try 99 { 100 101 require_once('config.php'); 102 require_once('function.php'); 103 104 105 $category=$_GET['category']; 106 107 108 109 110 $dbh=new PDO(DSN,DB_USER,DB_PASSWORD); 111 $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 112 $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 113 114 $sql='select * from douga_table where category=?'; 115 $stmt=$dbh->prepare($sql); 116 $data[]=$category; 117 118 $stmt->execute($data); 119 120 121 $dbh=null; 122 while(true) 123 { 124 $rec=$stmt->fetch(PDO::FETCH_ASSOC); 125 if($rec==false) 126 { 127 break; 128 } 129 130 $title=$rec['title']; 131 $query_string = 'category=' . urlencode($category) . '&title=' . urlencode($title); 132 echo '<li><a href="search.php?' . htmlentities($query_string) . '">'.$title.'</a></li>'; 133 134 print'<br>'; 135 136 } 137 138 139 140 } 141 catch (Exception $e) 142 { 143 print '取得に失敗しました。ただいま障害により大変ご迷惑をお掛けしております。'; 144 exit(); 145 } 146 147 ?> 148 149 150 </div> 151 152 </div> 153 154 </div> 155 <!-- /. ROW --> 156 157 <!-- /. ROW --> 158 </div> 159 <!-- /. PAGE INNER --> 160 </div> 161 <!-- /. PAGE WRAPPER --> 162 </div> 163 <!-- /. WRAPPER --> 164 165 166</body> 167</html>

get渡しで、2つパラメーターを渡しています。

gethttp://localhost/pc-douga/search.php?title=あああ&category=いいいい

2回データーベースを利用しています。

1回目のデーターベースは機能しています。

なぜ2回目のデーターベースは機能しないのでしょうか?

1回目の<php? ?>を消すと、2回目のデーターベース<php? ?>が機能します。

2回機能させるにはどうしたらよいのでしょうか?

環境はXAMPPです。

※追記

ご回答ありがとうございます。

2度目のデーターベースで下記を削除してもうごかないんです。
require_once('config.php');
require_once('function.php');

$dbh=new PDO(DSN,DB_USER,DB_PASSWORD);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

さらに一度目の$dbh=null;も消しても作動しません。

さらに

一度目を下記のように書いてもtitle一覧がでません。

<?php try { require_once('config.php'); require_once('function.php'); $title=$_GET['title']; $category=$_GET['category']; $dbh=new PDO(DSN,DB_USER,DB_PASSWORD); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $sql='select * from douga_table where title=?'; $stmt=$dbh->prepare($sql); $data[]=$title; $stmt->execute($data); $rec=$stmt->fetch(PDO::FETCH_ASSOC); print $rec['category'] ; print $rec['category_juni'] ; print $rec['title'] ; print $rec['you_tube']; print $rec['naiyou']; $sql='select * from douga_table where category=?'; $stmt=$dbh->prepare($sql); $data[]=$rec['category']; $stmt->execute($data); while(true) { $rec=$stmt->fetch(PDO::FETCH_ASSOC); if($rec==false) { break; } $title=$rec['title']; $query_string = 'category=' . urlencode($category) . '&title=' . urlencode($title); echo '<li><a href="search.php?' . htmlentities($query_string) . '">'.$title.'</a></li>'; print'<br>'; } } catch (Exception $e) { print '取得に失敗しました。ただいま障害により大変ご迷惑をお掛けしております。'; exit(); } ?>

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

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

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

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

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

guest

回答1

0

ベストアンサー

PDO のコンストラクタを 2 回呼ぶことになっていますが、SQL を投げる回数に関わらず一度だけ呼ぶようにするべきだと思います。

投稿2016/03/19 22:12

unau

総合スコア2468

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

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

manamana620

2016/03/20 07:54

解決しなかったのですが、ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問