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

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

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

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

PHP

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

Q&A

解決済

2回答

335閲覧

phpを用いてmysqlからSELECT文で引き出す際、phpの引数を使いたい

Nemuri

総合スコア5

MySQL

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

PHP

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

0グッド

0クリップ

投稿2019/09/15 19:22

前提・実現したいこと

phpでmysqlからデータを引き出す際、where likeで条件指定するときにphpの引数を用いたい。
今回の例でいうと $IDmemo から1を参照させて、mysqlからID:1 Name:データ1 を引き出したい。

$IDmemo としているところを直接手打ちで[1]などとした場合引き出せることは確認しました。
初歩的な質問ですが、よろしくお願いします。

該当のソースコード

mysql

1データベース名:DataBox 2テーブル名:Test 3 4| ID| Name |Data1| Data2 | 5| 1 |データ1| 91 | 134 | 6| 2 |データ2| 106 | 110 | 7| 3 |データ3| 100 | 100 |

php

1<?php 2 3$IDmemo = 1; 4 5mysqli_connect('localhost', 'root', 'password'); 6 7mysqli_select_db('localhost', 'root', 'password','DataBox'); 8 9mysqli_query 10('localhost', 'root', 'password', 'SELECT ID,Name FROM Test where id like $IDmemo'); 11 12?>

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

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

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

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

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

guest

回答2

0

ベストアンサー

変数でも何でも、SQLに値をそのまま突っ込むのはSQLインジェクションの脆弱性があります。
あとlikeについては殆どの場合、前方一致キーワード%or後方一致%キーワードor部分一致%キーワード%で検索を行います。「どう一致させたいか」は仕様となりますので、ご自身で決めていただくとして、下記のような記事を読んだ上で、きちんと実装していきましょう。

PHPでデータベースに接続するときのまとめ

LIKE検索についても記載がありますが、いきなりそこを読むと?????となると思いますので、上から順に設定部分からしっかりおさえていってください。

※大事なのはPHPからいきなり実装するのではなく、「直接DBに対して実行して想定の結果が得られるか確認できてからPHPで実装する」です。DBはPHPにとっては外部の仕組みなので、直接実行して想定通りの結果が得られないものは当然、ちゃんと動きません。
※直接実行して想定通りの結果が得られたのにPHPから・・・という場合は同じSQLが作れてないとか設定が間違っているとかそういった原因が考えられます

投稿2019/09/15 21:02

m.ts10806

総合スコア80854

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

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

Nemuri

2019/09/16 05:39

ありがとうございます、無事に実装することができました。
guest

0

$IDmemo としているところを直接手打ちで[1]などとした場合引き出せることは確認しました。

動かないと思いますが。。。

マニュアル読むところから始めると良いです。
mysqli_query

投稿2019/09/16 01:03

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Nemuri

2019/09/16 05:40

主題ではない部分は省いており、それで動かなく見える部分があるため「手打ちでは動かせる」という風に表現しました。表現不足で申し訳ありません。 マニュアルの読み込みが不足しているのは痛感しましたので、読み込ませて頂きます。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問