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

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

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

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

PHP

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

Q&A

2回答

1677閲覧

selectのWHEREで変数を使いたい

rei_01

総合スコア13

MySQL

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

PHP

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

0グッド

0クリップ

投稿2019/08/10 11:39

PHPでデータベースよりデータを取得しています。
取得時にフィルタをかけたいのですが、変数の囲み方がわかりません。

PHP

1function getAll() 2{ 3 $objPdo = connect(); 4 $statement = 'SELECT * FROM t_sale_den WHERE holiday=false and business_day like $hani%'; 5 $stmt = $objPdo->prepare($statement); 6 $stmt->execute(); 7 return $stmt->fetchAll(); 8}

$haniの変数には日付が入っており、他の個所で下記のようにしたら正常に表示されます。
(〇年〇月が取得され一覧で表示されます。)

上記コードのシングルクォートをダブルクォートにするとエラーが出るので、$statement内の$haniを何かで囲むのかと思うのですが、さっぱりわかりません。

PHP

1$sql = "SELECT * FROM t_sale_den WHERE holiday=false and business_day like '$hani%'";

どなたかご教授をお願い致します。

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

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

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

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

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

Orlofsky

2019/08/10 12:21

CREATE TABLE くらい提示できたほうが適切なコメントが付き易いです。
退会済みユーザー

退会済みユーザー

2019/08/10 12:27

そういう問題じゃねぇと、おら、思うぞ。
maisumakun

2019/08/10 22:50

business_dayの列の型は何でしょうか?
m.ts10806

2019/08/11 00:20

念のため「$hani」の内容を例示してください。 $haniを渡すようにするだけなら簡単ではありますが、その前に確認すること(その変数がどこからどうやってくるものなのか、t_sale_den のテーブル定義など)とその先本来やるべきことが沢山あるように思います。
guest

回答2

0

PHP で MySQL 接続時に必要な知識(最小限版)

LIKE はチョットめんどいですよ

以下、追記

まだクローズされていないので追記しておきます。

selectのWHEREで変数を使いたい

質問は「SELECT の WHERE のリテラルを変数として使いたい」と読み替えることができます。

リテラルを変数で表現するには、プリペアドステートメントを使用し、クエリの構文とデータを分離し、構文を改変できないようにした上で、データをバインドする方法が推奨されてます。

質問では、せっかく prepare() を使用しているにも関わらず、適切なプリペアードステートメントが記述でされていません。変数を SQL 文に埋め込んでいるため、構文の改変を許してしまっています。

正しい記述方法に関しては、PHP で MySQL 接続時に必要な知識(最小限版)を参照してください。

(余談:プリペアードステートメントで記述したクエリが DB でどの様にあつかわれるかは、「13.5 準備済みステートメントのための SQL 構文 - dev.mysql.com」の1番目のサンプルを見ておくと、イメージしやすいと思います。)

また、LIKE に関しても注意が必要です。
プリペアードステートメントを使用したデータバインドでは、エスケープやクオートは自動で判断されますが、ワイルドカード文字はその対象ではないため、自前でエスケープを記述する必要があります。
ワイルドカード文字はデータベースによって違いがあるため、データベースのマニュアルで必要な文字を確認しエスケープしてください。

本件が MySQL であれば、後方のみで使用しているので
bindValue(1, addcslashes($hani, '\_%') . '%', PDO::PARAM_STR);
のような記述になります。

エスケープが正しく行われていない場合、例えば $hani に「%01」のような値が突っ込まれると「%01%」をバインドしてしまい、意図した内容ではない検索が行われます。
DB 処理では、製作者の意図しない挙動を制限する必要があるのでワイルドカード文字に対してのエスケープは必須です。

参考記事で紹介している範囲は php でデータベース接続を扱うため必要なの最小限の知識なので、もっと詳しく説明している「PHPでデータベースに接続するときのまとめ」も併せて読むと良いです。

投稿2019/08/10 12:23

編集2019/08/17 22:31
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2019/08/10 12:26

LIKEは、この問題には関係ねぇと、おら、思うぞ。
退会済みユーザー

退会済みユーザー

2019/08/10 12:30

LIKE のバインドの仕方がよく分からなくて、文字連結にしてるひどいサンプルが結構あるんですよ。 文字連結使ったサンプルとか、消えてなくなればいいのにw
退会済みユーザー

退会済みユーザー

2019/08/10 12:33

そうじゃねょ。 おめぇ、PHP縄張りにしてんだろ、もうちょっと修行しろ。 そんなんじゃ天下一武道会に出場できねぇぞ。
退会済みユーザー

退会済みユーザー

2019/08/10 12:37

どうせリンク先見てないんでしょ。 LIKE はリンク先見た後のアドバイスだけど理解してます?
退会済みユーザー

退会済みユーザー

2019/08/10 12:38

だから、そういう問題じゃねぇぞ。 おめぇ、あったまおかしいってよく言われてんだろ?
退会済みユーザー

退会済みユーザー

2019/08/10 12:39

>LIKE はチョットめんどいですよ
退会済みユーザー

退会済みユーザー

2019/08/10 12:39

はいはいw それより自分の回答見直したほうがいいですよ。ひどいので^^;
退会済みユーザー

退会済みユーザー

2019/08/10 12:40

おめぇ、自分で言ってることが頭おかしいと思わねぇのか? おら、ほんとうにおめぇには呆れてくっぞ。
退会済みユーザー

退会済みユーザー

2019/08/10 12:41

まったく、この赤飯はいつも本当に言ってることがわっけわかんねぇな。 酒でも飲んでんのか?
退会済みユーザー

退会済みユーザー

2019/08/10 12:42

お酒飲んでないで、さっさとご自身の回答を見直してみればよいです。
退会済みユーザー

退会済みユーザー

2019/08/10 12:43

赤飯はインコかなんかなのか? おんなじ事しか言わねぇなぁ…。
退会済みユーザー

退会済みユーザー

2019/08/10 12:44

はいはいw それより自分の回答見直したほうがいいですよ。ひどいので^^;
退会済みユーザー

退会済みユーザー

2019/08/10 12:45

赤飯、おめぇ、頭でぇじょうぶか? おら、心配になってきたぞ。
退会済みユーザー

退会済みユーザー

2019/08/10 13:00

赤いのは飯じゃなくておめぇの顔だったか? >LIKE はチョットめんどいですよ LIKEは何にもめんどくせぇ事なんか、ねぇぞ。 ほんとに言ってることがめちゃくちゃだな、おめぇ。
退会済みユーザー

退会済みユーザー

2019/08/10 13:52 編集

めんどいなぁ^^; だったら各 DB のワイルドカードでエスケープが必要な文字羅列してみ。 あと、goku59 さんの回答、複文はいくつかの前提条件満たしてないと実行できないし、バインドを使用する場合クオートは自動で行われるので、以下はミスリードです。 > SQLの場合、数値以外の値はシングルクオートで囲むんだ
rei_01

2019/08/10 15:18

te2jiさん、goku59さん ご回答ありがとうございます。 リンク先を拝見しまして、LIKEが難しいとおっしゃった事が理解できましたので LIKEを使わず、日付でフィルタをかけようと思います。 そこでも少し躓いていますので、もう少しチャレンジしてみたいと思います。 お手上げになった際はまたお力を貸していただければありがたいです。
退会済みユーザー

退会済みユーザー

2019/08/10 21:13

日付なのであれば日付として扱ったほうが楽です。 でも、LIKE 使用しようって考えたってことは、日付ではなくて、文字として扱ってるんですかね?そうだとするとチョットやっかいかも。 LIKE はエスケープを通常より余計にしなくてはならないので、DB のマニュアルと php のマニュアルを読む必要があります。が、MySQL であればリンク先のテンプレート使うだけで良いです。理屈だけ覚えておいてください。
退会済みユーザー

退会済みユーザー

2019/08/10 22:20 編集

te2ji、おめぇは本当に頭が悪ぃみてぇだな。 >だったら各 DB のワイルドカードでエスケープが必要な文字羅列してみ。 何回言ったら分かるんだ? 関係ない話すんなって。 >$statement = 'SELECT * FROM t_sale_den WHERE holiday=false and business_day like $hani%'; >$haniの変数には日付が入っており、他の個所で下記のようにしたら正常に表示されます。 >$sql = "SELECT * FROM t_sale_den WHERE holiday=false and business_day like '$hani%'"; >上記コードのシングルクォートをダブルクォートにするとエラーが出る こういう話で、「ワイルドカードがどうした」とか「LIKEがどうした」とか、関係あるわけねーだろ。 本当におめぇは論理性も問題解決能力もゼロだな。te2ji
退会済みユーザー

退会済みユーザー

2019/08/10 22:17 編集

>goku59 さんの回答、複文はいくつかの前提条件満たしてないと実行できないし 誰か、「実行できる」って言ったか? おら、「これ実行したらどうなると思う?」って聞いただけだぞ? おめぇ、馬鹿だろ。なんで「どうなると思う?」って質問にしたと思ってんだ。 te2jiは本当に頭が悪ぃなぁ。
退会済みユーザー

退会済みユーザー

2019/08/10 22:10

>バインドを使用する場合クオートは自動で行われるので >$objPdo = connect(); >$statement = 'SELECT * FROM t_sale_den WHERE holiday=false and business_day like $hani%'; >$stmt = $objPdo->prepare($statement); >$stmt->execute(); >$statement = 'SELECT * FROM t_sale_den WHERE holiday=false and business_day like $hani%'; >$haniの変数には日付が入っており、他の個所で下記のようにしたら正常に表示されます。 >$sql = "SELECT * FROM t_sale_den WHERE holiday=false and business_day like '$hani%'"; >上記コードのシングルクォートをダブルクォートにするとエラーが出る 使ってねぇじゃねぇか。 te2jiは本当に頭が悪ぃな。
退会済みユーザー

退会済みユーザー

2019/08/10 22:11

te2ji、おめぇはさ、無考慮で適当なレスしてバツが悪くなったから妄想で言い逃れしようとするの、 いい加減やめとけ。 何回同じ事やってんだよ。 さすがにおらも呆れてくっぞ。
退会済みユーザー

退会済みユーザー

2019/08/10 22:12

>以下はミスリードです。 おめーのが「ミスリード」って言うんだと、おら、思うぞ。 te2jiは言ってる事がめちゃくちゃだな。
退会済みユーザー

退会済みユーザー

2019/08/10 22:14

>LIKE はエスケープを通常より余計にしなくてはならないので、DB のマニュアルと php のマニュアルを読む必要があります。が、MySQL であればリンク先のテンプレート使うだけで良いです。理屈だけ覚えておいてください。 本件とは全く関係ぇねぇ話で質問者を道に迷わせて、 こいつはいってぇ、何がしてぇんだ? ほんとに。
退会済みユーザー

退会済みユーザー

2019/08/10 22:15

おら、rei_01 が可愛そうになってきたぞ。
退会済みユーザー

退会済みユーザー

2019/08/10 22:20

ってか te2ji はいつも、質問全く読まねぇで答えてんだろ。 どうしようもねぇな。
退会済みユーザー

退会済みユーザー

2019/08/10 22:25

>$haniの変数には日付が入っており、他の個所で下記のようにしたら正常に表示されます。 >(〇年〇月が取得され一覧で表示されます。) >LIKE はチョットめんどいですよ >だったら各 DB のワイルドカードでエスケープが必要な文字羅列してみ。 te2ji の世界じゃ、日付に%とかアンダースコアとか使ってんのか。 おもしれぇ世界だなw おら、さすがに草が生えてきたぞ。
退会済みユーザー

退会済みユーザー

2019/08/10 22:41

リンク先の骨子 ・プリペアドステートメントを使おう(文字連結はするな) ・bindValue を使おう ・LIKE も気をつけよう コメントの意訳 ・LIKE のバインドの仕方がよく分からなくて、文字連結にしてるひどいサンプルが結構あるんですよ。 → goku59 さんの回答、ダメでしょ。。。文字連結掘り下げるとか、ひどすぎる。 あさからめんどくさいなぁw
退会済みユーザー

退会済みユーザー

2019/08/10 22:45

関係ない話すんなって、何回言わすんだ? >あさからめんどくさいなぁw めんどくせぇのに、質問と全く関係ねぇ話は何回も繰り返す馬鹿は さすがに初めて見たぞ。
退会済みユーザー

退会済みユーザー

2019/08/10 22:46

本件とは全く関係ぇねぇ話で質問者を道に迷わせて、 こいつはいってぇ、何がしてぇんだ? ほんとに。
退会済みユーザー

退会済みユーザー

2019/08/10 22:46

te2ji の世界じゃ、日付に%とかアンダースコアとか使ってんのか。 おもしれぇ世界だなw おら、さすがに草が生えてきたぞ。
退会済みユーザー

退会済みユーザー

2019/08/10 22:47

> 文字連結  どこに文字連結の話があるんだ? te2ji おめぇ、本当に酔っ払ってるだろw
退会済みユーザー

退会済みユーザー

2019/08/10 22:48

>文字連結掘り下げるとか、ひどすぎる。 酷いのはおめぇの頭の出来だと、おら、本気で思うぞ
退会済みユーザー

退会済みユーザー

2019/08/10 22:49

おい te2ji ちょっとその「文字連結の話」とやら、どれをおめぇがそう思ったのか具体的に指し示してみろよw
退会済みユーザー

退会済みユーザー

2019/08/10 22:52

te2ji はあれか? なんか結構長くプログラマやってるみてぇだが、言葉の定義すらあやふやなのか? そりゃおめぇ、もっと修行した方がいいと、おら、本気で思うぞ。
退会済みユーザー

退会済みユーザー

2019/08/10 22:55

te2ji って、向こうでも言われ続けてんだけど、 自分の言ってる事がおかしいって、少しも思わねぇのな。 おら、その鉄のハートだけは、ある意味すげぇと思ってっぞ。 それで「鉄児」なのか? もしかして。笑えねぇぞ、それ。
退会済みユーザー

退会済みユーザー

2019/08/10 23:05

どーでもいいことにいつまで粘着してんのよ^^; 本件は、 ・プリペアドステートメントを使おう(文字連結はするな) ・bindValue を使おう ・LIKE も気をつけよう って回答。 まぁ、指摘通り、文字連結する名ではなくて「直接変数を埋め込むな」ってのが正。 揚げ足取ってないで、回答修正してみては? 「変数展開」って言葉使いたいんだったら使えばいいし。
退会済みユーザー

退会済みユーザー

2019/08/10 23:08

関係ない話すんなって、何回言わすんだ? >どーでもいいことにいつまで粘着してんのよ^^; どーでもいいことに、何度も何度も質問と全く関係ねぇ話を繰り返す馬鹿は さすがに初めて見たぞ。
退会済みユーザー

退会済みユーザー

2019/08/10 23:08

本件とは全く関係ぇねぇ話で質問者を道に迷わせて、 こいつはいってぇ、何がしてぇんだ? ほんとに。
退会済みユーザー

退会済みユーザー

2019/08/10 23:09

te2ji の世界じゃ、日付に%とかアンダースコアとか使ってんのか。 おもしれぇ世界だなw おら、さすがに草が生えてきたぞ。
退会済みユーザー

退会済みユーザー

2019/08/10 23:09

>まぁ、指摘通り、文字連結する名ではなくて「直接変数を埋め込むな」ってのが正。 te2ji はあれか? なんか結構長くプログラマやってるみてぇだが、言葉の定義すらあやふやなのか? 変数展開って言葉をしらねぇのか? そりゃおめぇ、もっと修行した方がいいと、おら、本気で思うぞ。
退会済みユーザー

退会済みユーザー

2019/08/10 23:10

>揚げ足取ってないで、回答修正してみては?
退会済みユーザー

退会済みユーザー

2019/08/10 23:11

本当の馬鹿みてぇだな。 揚げ足じゃなくて、おめぇが、完全に、間違ってるから指摘してんだ。 修正すべき場所もねぇけど、ちょっとその場所を指摘してみろよ。
退会済みユーザー

退会済みユーザー

2019/08/10 23:11

修正すべきなのは te2ji おめぇの脳みその動き方の方だと、おら、思うぞ。
退会済みユーザー

退会済みユーザー

2019/08/10 23:11

落ち着いてよく読もうよ^^; ほんとどーでもいい内容。。。
退会済みユーザー

退会済みユーザー

2019/08/11 00:05

まーた具体的なことを言わずに逃げ回ってんな、おめぇ。 回答からして、具体的なことを言わずに逃げ回ってるしな。 どーでもいいのは、おめぇの存在そのものだと、おら、思うぞ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:06

>$statement = 'SELECT * FROM t_sale_den WHERE holiday=false and business_day like $hani%'; >$haniの変数には日付が入っており、他の個所で下記のようにしたら正常に表示されます。 >$sql = "SELECT * FROM t_sale_den WHERE holiday=false and business_day like '$hani%'"; >上記コードのシングルクォートをダブルクォートにするとエラーが出る こういう話で、「ワイルドカードがどうした」とか「LIKEがどうした」とか、関係あるわけねーだろ。 本当におめぇは論理性も問題解決能力もゼロだな。te2ji
退会済みユーザー

退会済みユーザー

2019/08/11 00:06

>$haniの変数には日付が入っており、他の個所で下記のようにしたら正常に表示されます。 >(〇年〇月が取得され一覧で表示されます。) >LIKE はチョットめんどいですよ >だったら各 DB のワイルドカードでエスケープが必要な文字羅列してみ。 te2ji の世界じゃ、日付に%とかアンダースコアとか使ってんのか。 おもしれぇ世界だなw おら、さすがに草が生えてきたぞ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:07

>本質を俯瞰で見ようよ おめぇのは俯瞰で見てるんじゃなくて、何にも見ねぇで妄想を語ってるだけだ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:12

何度同じこと書かせるんだ? 本件は、 ・プリペアドステートメントを使おう(直接変数を埋め込むな) ・bindValue を使おう ・LIKE も気をつけよう って回答。 > te2ji の世界じゃ、日付に%とかアンダースコアとか使ってんのか。 俺の世界じゃないから知らんよ。CREATE TABLE があればわかるかもね。
退会済みユーザー

退会済みユーザー

2019/08/11 00:15

何回おんなじこといわせんだ? 質問と関係ない話すんな。 >だったら各 DB のワイルドカードでエスケープが必要な文字羅列してみ。 何回言ったら分かるんだ? 関係ない話すんなって。 >$statement = 'SELECT * FROM t_sale_den WHERE holiday=false and business_day like $hani%'; >$haniの変数には日付が入っており、他の個所で下記のようにしたら正常に表示されます。 >$sql = "SELECT * FROM t_sale_den WHERE holiday=false and business_day like '$hani%'"; >上記コードのシングルクォートをダブルクォートにするとエラーが出る こういう話で、「ワイルドカードがどうした」とか「LIKEがどうした」とか、関係あるわけねーだろ。 本当におめぇは論理性も問題解決能力もゼロだな。te2ji
退会済みユーザー

退会済みユーザー

2019/08/11 00:15

te2ji はさ、本当に、論理破綻してんの、なんとかしろ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:16

> selectのWHEREで変数を使いたい に対して > プリペアドステートメントを使おう(直接変数を埋め込むな) ごくシンプルな回答だぞ。 まだ理解できないの?
退会済みユーザー

退会済みユーザー

2019/08/11 00:23

>まだ理解できないの? まだ、質問者に聞かれてる事と、全く関係ねぇってわかんねぇのか? おめぇ。 そりゃ、あたまのびょーきだ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:24

質問者「自転車がパンクしてしまったんですが、修理の方法を教えて下さい」 te2ji「自動車に乗ってください。そう簡単にパンクなんかしません」 あたまおかしいだろ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:27

te2ji おめぇはさ、人間ってのは一歩ずつ歩いて成長して行くものだって事を全く考えてねぇな。 おめぇのはいつもさ、回答じゃなくておめぇの独り言なんだよな。 あたまおかしいだろ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:33 編集

というか、te2ji の最大の問題は、「論理」って物が全くわからねぇ事だけどな。 おらが「7、8年くれぇ前ぇに見た」って言ってんのに、「それはこの記事を参照したものだ」って2013年の記事の事を言い出すし。 https://teratail.com/questions/205451 「それはあなたの記憶違いでは?」ならわかるんだが「それはこの記事を参照したものです」だからな。 話が全く前に進まねぇ。 本当に te2ji は言ってる事がめちゃくちゃすぎんだよ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:34

「理解できない!」ってわめき散らかされても困る。。。 おれは、goku59 さんに手とり足取り教えるつもりは無いし、その責任も無い。 わからんことはメンターにでも聞いてくれ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:34

古ぃ話だから『おらの記憶違いかもしんねぇな』と思って検索してる間についたレスが 「それはこの記事を参照したものだ」だからな。 もう、話が分からなすぎて『本当にこいつ人間か? サイバイマンじゃねぇのか?』と思うぞ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:35

うーわ、また話の筋と全く関係ぇねぇ事いってやがるし。 で、te2ji の妄想では >「理解できない!」ってわめき散らかされても こうなってんのな。 妄想でいつも自己満足してんのか、そりゃ、やっぱ頭のびょーきだぞ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:38 編集

>「理解できない!」ってわめき散らかされても こういう妄想描いてなんとか自分の気持を落ちつける癖、 いい加減に止めたほうがいいと、おら、思うぞ。 あとな、何度も言うけど、 今回の質問には「ワイルドカードがどうした」とか「LIKEがどうした」とか、全く関係ねぇ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:39

プリペアドステートメントと値のバインドについても、全く関係ねぇ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:39

おめぇは、質問文を、ちゃんと、読め。 ずっと言ってるとおりだ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:40

質問者「自転車がパンクしてしまったんですが、修理の方法を教えて下さい」 te2ji「自動車に乗ってください。そう簡単にパンクなんかしません」 これがどんだけ頭のおかしい奴の言い分か、いい加減に自分にまともに向き合え。
退会済みユーザー

退会済みユーザー

2019/08/11 00:53 編集

te2ji は相手の文章を全く読まずに妄想で答えるから >それでよう、おめぇ、これ実行したらどうなると思う? こう書いている物を、その言葉の意味合いも考えずに、SQLインジェクションが必ず起こる前提の文章だと勝手に解釈して勝手に勝ち誇ってるし、 >あとな、PHPで“そのコードの場合”、 って書いてる物を、その言葉の意味合いも考えずに、プレースホルダ使わねぇ前提の文章だと勝手に解釈して勝手に勝ち誇ってるし、 まぁ、端的に言うとな、te2ji は、頭が悪過ぎんだ。 1つ1つの言葉について、裏側に何を込めているのか全く洞察できねぇ。 確か te2ji は昔っからずっとおんなじ事やってるよな、 hentaimanとかいう奴もそうだったな。 te2ji はさ、多分、作業工みてぇな仕事しかやらされてもらえねぇだろ。 それじゃ、折衝の現場は無理だ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:50

もっというと、te2ji では、新人の教育は絶対に無理だな。 自分のペースで勝手に歩いてるだけだから。
退会済みユーザー

退会済みユーザー

2019/08/11 00:54 編集

だからさ、もう一回言っとくぞ。 今回の質問には「ワイルドカードがどうした」とか「LIKEがどうした」とか、全く関係ねぇ。 プリペアドステートメントと値のバインドについても、全く関係ねぇ。 te2ji の自己満足で、質問者の足をひっぱるのは止めとけ。
guest

0

おす!

SQLの場合、数値以外の値はシングルクオートで囲むんだ。DBによって何で囲むべきか変わるからな。

それでよう、おめぇ、これ実行したらどうなると思う?

$hani = "'; DELETE FROM t_sale_den WHERE holiday IS NOT NULL; --"; $sql = "SELECT * FROM t_sale_den WHERE holiday=false and business_day like '$hani%'";

投稿2019/08/10 12:09

編集2019/08/10 12:14
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2019/08/10 12:17

あとな、PHPでそのコードの場合、関数の外の変数を使いたいときは、最悪、global $hani; しねぇと、参照できねぇぞ。
退会済みユーザー

退会済みユーザー

2019/08/10 12:32 編集

あとな、 >$statement = 'SELECT * FROM t_sale_den WHERE holiday=false and business_day like $hani%'; PHPは、シングルクオートで囲まれたストリングリテラルの中では、変数の値は展開されねぇんだ。
退会済みユーザー

退会済みユーザー

2019/08/10 23:15

直接変数を埋め込むって方向の先に正しい回答は無いので、修正してみては? > SQLの場合、数値以外の値はシングルクオートで囲むんだ。DBによって何で囲むべきか変わるからな。 プリペアドステートメントを使用するなら、上記は勝手に処理してくれるんで考慮しなくて良くなりますよ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:13

>直接変数を埋め込むって方向の先に正しい回答は無いので、修正してみては? 誰か、そうしろって言ってるか? te2ji おめぇ、本当に頭おかしいだろ?
退会済みユーザー

退会済みユーザー

2019/08/11 00:24

> SQLの場合、数値以外の値はシングルクオートで囲むんだ。DBによって何で囲むべきか変わるからな。 この前提って、直接変数を埋め込むって方向を向いたときにのみ有効なですよね?プリペアードステートメントを使用した場合、ミスリードになります。バインドを使用する場合、シングルクオートは必要ないです。
退会済みユーザー

退会済みユーザー

2019/08/11 00:25

まだ、質問者に聞かれてる事と、全く関係ねぇってわかんねぇのか? おめぇ。 そりゃ、あたまのびょーきだ。
退会済みユーザー

退会済みユーザー

2019/08/11 00:25

質問者「自転車がパンクしてしまったんですが、修理の方法を教えて下さい」 te2ji「自動車に乗ってください。そう簡単にパンクなんかしません」 あたまおかしいだろ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問