質問編集履歴

3 コードを質問した時点のものに戻した(回答をいただいて直してしまったが直さないほうが質問をみに来た人にとっていいと思った)

kadot

kadot score 27

2020/05/08 16:15  投稿

PHPとDBを連携するコードを共通化したい
簡単なWebアプリをチュートリアルに沿って作っています。
(フレームワークは使わず、素のPHPで書いています)
データベースとの連携のために
複数ファイルに記述しているtrycatch文なのですが
毎回同じような記述があることに気づいたので
共通化できないかと考えています。
そこで下記のような関数を作成してみました。
(catch文で使われているh関数はfunctions.phpで定義しています)
**dbConnect.php**
```php
<?php
 require_once('functions.php');
 const DB_NAME = 'database';
 const HOST = 'localhost';
 const UTF = 'utf8';
 const DB_USER = 'root';
 const DB_PASSWORD = 'root';
 const DSN = 'mysql:host=' . HOST . ';dbname='. DB_NAME . ';charset=' . UTF;
 function dbFunc($sqlSentence, $pattern, $bindValue1, $bindValue2, $bindValue3) {
   try {
     $dbh = new PDO(DSN, DB_USER, DB_PASSWORD);
     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $sql = $sqlSentence;
     if ($pattern === 'query') {
     if ($pattern = 'query') {
       $stmt = $dbh->query($sql);               
     }
     if ($pattern === 'prepare') {
     if ($pattern = 'prepare') {
       $stmt = $dbh->prepare($sql);
       $stmt->bindValue($bindValue1, $bindValue2 , $bindValue3);
       $stmt->execute();
     }
     $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
     $dbh = null;
   } catch (PDOException $e) {
     echo 'エラー' . h($e->getMessage());
     exit();
   }
 }
```
もしこの書き方では良くないポイントがあれば教えていただきたいです。
(または参考になりそうな記事があれば教えてほしいです)
また、現場ではデータベース連携するためのコードは
どのように書かれているのでしょうか?
よろしくお願いします。
  • PHP

    38912 questions

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

  • MySQL

    12093 questions

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

  • SQL

    5817 questions

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

  • データベース

    2942 questions

    データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

2 質問を閉じる

kadot

kadot score 27

2020/05/08 15:21  投稿

PHPとDBを連携するコードを共通化したい
簡単なWebアプリをチュートリアルに沿って作っています。
(フレームワークは使わず、素のPHPで書いています)
データベースとの連携のために
複数ファイルに記述しているtrycatch文なのですが
毎回同じような記述があることに気づいたので
共通化できないかと考えています。
そこで下記のような関数を作成してみました。
(catch文で使われているh関数はfunctions.phpで定義しています)
**dbConnect.php**
```php
<?php
 require_once('functions.php');
 const DB_NAME = 'database';
 const HOST = 'localhost';
 const UTF = 'utf8';
 const DB_USER = 'root';
 const DB_PASSWORD = 'root';
 const DSN = 'mysql:host=' . HOST . ';dbname='. DB_NAME . ';charset=' . UTF;
 function dbFunc($sqlSentence, $pattern, $bindValue1, $bindValue2, $bindValue3) {
   try {
     $dbh = new PDO(DSN, DB_USER, DB_PASSWORD);
     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $sql = $sqlSentence;
     if ($pattern = 'query') {
     if ($pattern === 'query') {
       $stmt = $dbh->query($sql);               
     }
     if ($pattern = 'prepare') {
     if ($pattern === 'prepare') {
       $stmt = $dbh->prepare($sql);
       $stmt->bindValue($bindValue1, $bindValue2 , $bindValue3);
       $stmt->execute();
     }
     $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
     $dbh = null;
   } catch (PDOException $e) {
     echo 'エラー' . h($e->getMessage());
     exit();
   }
 }
```
もしこの書き方では良くないポイントがあれば教えていただきたいです。
(または参考になりそうな記事があれば教えてほしいです)
また、現場ではデータベース連携するためのコードは
どのように書かれているのでしょうか?
よろしくお願いします。
  • PHP

    38912 questions

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

  • MySQL

    12093 questions

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

  • SQL

    5817 questions

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

  • データベース

    2942 questions

    データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

  • Laravel

    5357 questions

    LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

1 フレームワークは使わず素のPHPで書いているという情報を追加

kadot

kadot score 27

2020/05/08 15:11  投稿

PHPとDBを連携するコードを共通化したい
簡単なWebアプリをチュートリアルに沿って作っています。  
(フレームワークは使わず、素のPHPで書いています)  
 
データベースとの連携のために
複数ファイルに記述しているtrycatch文を
複数ファイルに記述しているtrycatch文なのですが
毎回同じような記述があることに気づいたので
共通化できないかと考えています。
そこで下記のような関数を作成してみました。
(catch文で使われているh関数はfunctions.phpで定義しています)
**dbConnect.php**
```php
<?php
 require_once('functions.php');
 const DB_NAME = 'database';
 const HOST = 'localhost';
 const UTF = 'utf8';
 const DB_USER = 'root';
 const DB_PASSWORD = 'root';
 const DSN = 'mysql:host=' . HOST . ';dbname='. DB_NAME . ';charset=' . UTF;
 function dbFunc($sqlSentence, $pattern, $bindValue1, $bindValue2, $bindValue3) {
   try {
     $dbh = new PDO(DSN, DB_USER, DB_PASSWORD);
     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $sql = $sqlSentence;
     if ($pattern = 'query') {
       $stmt = $dbh->query($sql);               
     }
     if ($pattern = 'prepare') {
       $stmt = $dbh->prepare($sql);
       $stmt->bindValue($bindValue1, $bindValue2 , $bindValue3);
       $stmt->execute();
     }
     $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
     $dbh = null;
   } catch (PDOException $e) {
     echo 'エラー' . h($e->getMessage());
     exit();
   }
 }
```
もしこの書き方では良くないポイントがあれば教えていただきたいです。
(または参考になりそうな記事があれば教えてほしいです)
また、現場ではデータベース連携するためのコードは
どのように書かれているのでしょうか?
よろしくお願いします。
  • PHP

    38912 questions

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

  • MySQL

    12093 questions

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

  • Laravel

    5357 questions

    LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

  • SQL

    5817 questions

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

  • データベース

    2942 questions

    データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る