質問編集履歴

4 table insert createコード

DaisukeKusakari

DaisukeKusakari score 14

2018/08/29 19:35  投稿

MySQLのSELECT文のWHEREのOR条件の繰り返し処理
いつもお世話になっております。
標題について、$dateには0~8個までの日付が格納されています(例:2018-08-29)。その格納されたデータ個数だけMySQLのSELECT文のWHEREのOR条件に追加する繰り返し処理をしたいのですが(FORループ?)、このような書き方はSQLで可能でしょうか。データ個数だけクエリを実行しておいいのですが、処理に時間がかかりそうな気がするし、あまり美しくないと感じました。
```php
function search_from_date($dbh, $date){
 if (!empty($date)){
   $cnt1 = count($date);
 }
 $active_days_str = get_active_days_str();
 $cnt2 = count($active_days_str);
 if (empty($cnt1)||$cnt1 == $cnt2){
   $sql = <<<SQL
   SELECT `id`
   FROM `schedule`
SQL;
   $stmt = $dbh->prepare($sql);
   if($stmt->execute()){
     $teacher_id = $stmt->fetchAll();
     return $teacher_id;
   }else{
     return FALSE;
   }
 }else{
// $dateに日付が格納されていた時に$cnt1回数だけSQL WHERE文のOR条件を増やしたい…!
 }
}
```
仮想配列$dateから複数のカラム名を参照し、1が入ったidをOR検索したいです。
![DB](8e2a17df0ada7ab4bda3e6b75e1e2338.png)
![DB](8e2a17df0ada7ab4bda3e6b75e1e2338.png)
```spl
CREATE TABLE `schedule` (  `id` varchar(20) NOT NULL,  `2018-09-23` int(1) DEFAULT NULL,  `2018-09-22` int(1) DEFAULT NULL,  `2018-09-16` int(1) DEFAULT NULL,  `2018-09-15` int(1) DEFAULT NULL,  `2018-09-09` int(1) DEFAULT NULL,  `2018-09-08` int(1) DEFAULT NULL,  `2018-09-02` int(1) DEFAULT NULL,  `2018-09-01` int(1) DEFAULT NULL )
INSERT INTO `schedule` (`id`, `2018-09-23`, `2018-09-22`, `2018-09-16`, `2018-09-15`, `2018-09-09`, `2018-09-08`, `2018-09-02`, `2018-09-01`) VALUES ('honda', NULL, 1, 1, 1, 1, 1, 1, 0)
```
  • PHP

    26466 questions

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

  • MySQL

    7774 questions

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

  • SQL

    3388 questions

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

3 ミス訂正

DaisukeKusakari

DaisukeKusakari score 14

2018/08/29 19:15  投稿

MySQLのSELECT文のWHEREのOR条件の繰り返し処理
いつもお世話になっております。
標題について、$dateには0~8個までの日付が格納されています(例:2018-08-29)。その格納されたデータ個数だけMySQLのSELECT文のWHEREのOR条件に追加する繰り返し処理をしたいのですが(FORループ?)、このような書き方はSQLで可能でしょうか。データ個数だけクエリを実行しておいいのですが、処理に時間がかかりそうな気がするし、あまり美しくないと感じました。
```php
function search_from_date($dbh, $date){
 if (!empty($date)){
   $cnt1 = count($date);
 }
 $active_days_str = get_active_days_str();
 $cnt2 = count($active_days_str);
 if (empty($cnt1)||$cnt1 == $cnt2){
   $sql = <<<SQL
   SELECT `id`
   FROM `schedule`
SQL;
   $stmt = $dbh->prepare($sql);
   if($stmt->execute()){
     $teacher_id = $stmt->fetchAll();
     return $teacher_id;
   }else{
     return FALSE;
   }
 }else{
// $dateに日付が格納されていた時に$cnt1回数だけSQL WHERE文のOR条件を増やしたい…!
 }
}
```
[仮想配列$dateから複数のカラム名を参照し、1が入ったidをOR検索したいです](e1bc58600db4be701e15d5fb2ada4b2c.png)
仮想配列$dateから複数のカラム名を参照し、1が入ったidをOR検索したいです。
![DB](8e2a17df0ada7ab4bda3e6b75e1e2338.png)
  • PHP

    26466 questions

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

  • MySQL

    7774 questions

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

  • SQL

    3388 questions

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

2 画像追加

DaisukeKusakari

DaisukeKusakari score 14

2018/08/29 19:14  投稿

MySPLのSELECT文のWHEREのOR条件の繰り返し処理
MySQLのSELECT文のWHEREのOR条件の繰り返し処理
いつもお世話になっております。
標題について、$dateには0個から8個までの日付が格納されています(例:2018-08-29)。その格納されたデータ個数だけMySPLのSELECT文のWHEREのOR条件に追加する繰り返し処理をしたいのですが(FORループ?)、このような書き方はsqlで可能でしょうか。データ個数だけクエリ、SELECT文を実行しておいいのですが、処理に時間がかかりそうな気がするし、あまり美しくないと感じました。
標題について、$dateには0~8個までの日付が格納されています(例:2018-08-29)。その格納されたデータ個数だけMySQLのSELECT文のWHEREのOR条件に追加する繰り返し処理をしたいのですが(FORループ?)、このような書き方はSQLで可能でしょうか。データ個数だけクエリを実行しておいいのですが、処理に時間がかかりそうな気がするし、あまり美しくないと感じました。
```php
function search_from_date($dbh, $date){
 if (!empty($date)){
   $cnt1 = count($date);
 }
 $active_days_str = get_active_days_str();
 $cnt2 = count($active_days_str);
 if (empty($cnt1)||$cnt1 == $cnt2){
   $sql = <<<SQL
   SELECT `id`
   FROM `schedule`
SQL;
   $stmt = $dbh->prepare($sql);
   if($stmt->execute()){
     $teacher_id = $stmt->fetchAll();
     return $teacher_id;
   }else{
     return FALSE;
   }
 }else{
// $dateに日付が格納されていた時に$cnt1回数だけSQL WHERE文のOR条件を増やしたい…
// $dateに日付が格納されていた時に$cnt1回数だけSQL WHERE文のOR条件を増やしたい…!
 }
}
```
```
[仮想配列$dateから複数のカラム名を参照し、1が入ったidをOR検索したいです](e1bc58600db4be701e15d5fb2ada4b2c.png)
  • PHP

    26466 questions

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

  • MySQL

    7774 questions

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

  • SQL

    3388 questions

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

1 質問文追加

DaisukeKusakari

DaisukeKusakari score 14

2018/08/29 06:56  投稿

MySPLのSELECT文のWHEREのOR条件の繰り返し処理
いつもお世話になっております。
標題について、$dateには0個から8個までの日付が格納されています(例:2018-08-29)。その格納されたデータ個数だけMySPLのSELECT文のWHEREのOR条件に追加する繰り返し処理をしたいのですが(FORループ?)、このような書き方はsqlで可能でしょうか。
標題について、$dateには0個から8個までの日付が格納されています(例:2018-08-29)。その格納されたデータ個数だけMySPLのSELECT文のWHEREのOR条件に追加する繰り返し処理をしたいのですが(FORループ?)、このような書き方はsqlで可能でしょうか。データ個数だけクエリ、SELECT文を実行しておいいのですが、処理に時間がかかりそうな気がするし、あまり美しくないと感じました。
```php
function search_from_date($dbh, $date){
 if (!empty($date)){
   $cnt1 = count($date);
 }
 $active_days_str = get_active_days_str();
 $cnt2 = count($active_days_str);
 if (empty($cnt1)||$cnt1 == $cnt2){
   $sql = <<<SQL
   SELECT `id`
   FROM `schedule`
SQL;
   $stmt = $dbh->prepare($sql);
   if($stmt->execute()){
     $teacher_id = $stmt->fetchAll();
     return $teacher_id;
   }else{
     return FALSE;
   }
 }else{
// $dateに日付が格納されていた時に$cnt1回数だけSQL WHERE文のOR条件を増やしたい…
 }
}
```
  • PHP

    26466 questions

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

  • MySQL

    7774 questions

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

  • SQL

    3388 questions

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

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