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

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

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

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

PHP

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

Q&A

解決済

2回答

543閲覧

php+MySQLで昨日以前のデータを抽出する方法

singlestroke

総合スコア68

MySQL

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

PHP

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

0グッド

0クリップ

投稿2018/04/08 22:00

##やりたいこと
php+MySQLで昨日以前の日付のデータのうち最新の1件を抽出したい。

##DB内テーブル
id(int)
user_id(int)
target_date(date)
created(datetime)

##現在のソースコード

lang

1$sql = "SELECT `id`, `target_date`, `text`, `created` 2 FROM `targets` 3 WHERE `user_id` = $user_id 4 AND DATE(`target_date`) < DATE($today)";

##問題点
データが1件も抽出されません

target_date,created ともに作成日がデータとして格納されており、形式が異なるだけで日付は同一です。

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

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

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

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

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

m.ts10806

2018/04/08 22:32

PHP、MySQLのバージョンと変数を展開した状態のSQLを質問本文に追記してください。
m.ts10806

2018/04/08 22:47

PHP変数を{}で囲って実行してみてその結果も教えてください。あとデータは実際に提示した条件で存在するんですよね?phpmyadminなどツール上でSQLだけ実行してみましたか?
退会済みユーザー

退会済みユーザー

2018/04/08 23:36

ストリングリテラルをクオートで囲んでいないのでエラーが出ているけど、エラー判定処理を一切していないのでコケている事に気付かず血眼で結果セットを確認している気がする…。
退会済みユーザー

退会済みユーザー

2018/04/08 23:48

昨日以前だから普通に CURRENTでやればいいのにね
guest

回答2

0

1件も出力されないというのは、プレースホルダの値が正しく無いと思われます。
バインド後の$sqlの内容を出力して、MySQLで直接確認してみてください。

投稿2018/04/09 00:43

sazi

総合スコア25195

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

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

0

ベストアンサー

具体的なサンプルがないので、今提示されているデータから
類推するに、こん感じですか?

SQL

1SELECT * FROM `targets` 2WHERE `user_id` = ? 3AND `target_date` < CURDATE() 4ORDER BY `target_date` DESC 5LIMIT 1

投稿2018/04/09 00:21

yambejp

総合スコア114839

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

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

yambejp

2018/04/09 00:23

普通はMAXで処理するのですが、とりあえず最新データの 1件をだすならLIMIT
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問