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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

0回答

873閲覧

DB接続、execute();等の処理を共通関数にまとめたい

Paryi

総合スコア1

MySQL

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

1クリップ

投稿2021/07/11 02:10

編集2021/07/11 06:38

プログラミング初心者です!

下記の「shop_list.php」と「shop_product.php」の$dsn = ~ から、$stmt->execute(~)の処理を
引数を$sqlと$dataとして、受け取ったSQL文($sql)に、埋め込むデータ($data)を埋め込み、実行。実行結果が入った$stmtをreturnする処理の共通関数を作成したいです。
なお、作成する共通関数のメソッドは「executeSql」です。

PHP

1//shop_list.php 2 3<?php 4session_start(); 5require_once('../common/common.php'); 6session_regenerate_id(true); 7if(isset($_SESSION['member_login'])==false) 8{ 9 print 'ようこそゲスト様 '; 10 print '<a href="member_login.html">会員ログイン</a><br />'; 11 print '<br />'; 12} 13else 14{ 15 print 'ようこそ'; 16 print $_SESSION['member_name']; 17 print ' 様 '; 18 print '<a href="member_logout.php">ログアウト</a><br />'; 19 print '<br />'; 20} 21?> 22 23<!DOCTYPE html> 24<html> 25<head> 26<meta charset="UTF-8"> 27<title>ろくまる農園</title> 28</head> 29<body> 30 31<?php 32 33try 34{ 35$dsn='mysql:dbname=shop;host=localhost;charset=utf8'; 36$user='root'; 37$password=''; 38$dbh=new PDO($dsn,$user,$password); 39$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 40 41$sql='SELECT code,name,price FROM mst_product WHERE 1'; 42$stmt=$dbh->prepare($sql); 43$stmt->execute(); 44 45$dbh=null; 46 47print '商品一覧<br /><br />'; 48 49while(true) 50{ 51 $rec=$stmt->fetch(PDO::FETCH_ASSOC); 52 if($rec==false) 53 { 54 break; 55 } 56 print '<a href="shop_product.php?procode='.$rec['code'].'">'; 57 print $rec['name'].'---'; 58 print $rec['price'].'円'; 59 print '</a>'; 60 print '<br />'; 61} 62 63print '<br />'; 64print '<a href="shop_cartlook.php">カートを見る</a><br />'; 65 66} 67catch (Exception $e) 68{ 69 displayError(); 70} 71 72?> 73 74</body> 75</html>

PHP

1//shop_product.php 2 3<?php 4session_start(); 5require_once('../common/common.php'); 6session_regenerate_id(true); 7if(isset($_SESSION['member_login'])==false) 8{ 9 print 'ようこそゲスト様 '; 10 print '<a href="member_login.html">会員ログイン</a><br />'; 11 print '<br />'; 12} 13else 14{ 15 print 'ようこそ'; 16 print $_SESSION['member_name']; 17 print '様 '; 18 print '<a href="member_logout.php">ログアウト</a><br />'; 19 print '<br />'; 20} 21?> 22 23<!DOCTYPE html> 24<html> 25<head> 26<meta charset="UTF-8"> 27<title>ろくまる農園</title> 28</head> 29<body> 30 31<?php 32 33try 34{ 35$pro_code=$_GET['procode']; 36 37$dsn='mysql:dbname=shop;host=localhost;charset=utf8'; 38$user='root'; 39$password=''; 40$dbh=new PDO($dsn,$user,$password); 41$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 42 43$sql='SELECT name,price,gazou FROM mst_product WHERE code=?'; 44$stmt=$dbh->prepare($sql); 45$data[]=$pro_code; 46$stmt->execute($data); 47 48$rec=$stmt->fetch(PDO::FETCH_ASSOC); 49$pro_name=$rec['name']; 50$pro_price=$rec['price']; 51$pro_gazou_name=$rec['gazou']; 52 53$dbh=null; 54 55if($pro_gazou_name=='') 56{ 57 $disp_gazou=''; 58} 59else 60{ 61 $disp_gazou='<img src="../product/gazou/'.$pro_gazou_name.'">'; 62} 63print '<a href="shop_cartin.php?procode='.$pro_code.'">カートに入れる</a><br /><br />'; 64 65} 66catch(Exception $e) 67{ 68 displayError(); 69} 70 71?> 72 73商品情報参照<br /> 74<br /> 75商品コード<br /> 76<?php print $pro_code; ?> 77<br /> 78商品名<br /> 79<?php print $pro_name; ?> 80<br /> 81価格<br /> 82<?php print $pro_price; ?>83<br /> 84<?php print $disp_gazou; ?> 85<br /> 86<br /> 87<form> 88<input type="button" onclick="history.back()" value="戻る"> 89</form> 90 91</body> 92</html>

実行結果は、以下の画像のように野菜のメニューやその詳細画面が表示されます。

【shop_list.phpの画面】
イメージ説明

【shop_product.phpの画面】
イメージ説明

個人的に調べてbindValueを使いそうなことはわかったのですが、そこから先がどのようにしたらreturnで実行結果の入った$stmt返せるのかがわからず詰まっています。

なので、是非ヒントをご教授頂ければ大変助かります。
情報不足な箇所があるかもしれませんが、何卒宜しくお願い申し上げます。

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

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

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

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

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

m.ts10806

2021/07/11 06:34

PHP を質問タグとして追加してください。
m.ts10806

2021/07/11 06:35

クラスも関数も使ってないならreturnする必要ないのでは?
Paryi

2021/07/11 08:55

そのための共通関数を作成しようとしているのですが、作り方がわからず質問させて頂きました。 今は「shop_list.php」と「shop_product.php」とそれぞれで$dsn = ~ から、$stmt->execute(~)の処理を記述しておりますが、これらを1つの共通関数にまとめて、実行結果をreturnで返すことで画像のような画面を表示させたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問