2017-08-10 6 views
0

私はそれほどPHPにうまく対応しておらず、今は固執しています。PHPクエリでテーブルデータを配列に埋め込む/分解する

私のデータベースのテーブル行の1つにこのコードがあります。 Danish_English_Swedish。データはテーブル教師からのものです。

私はこのクエリを持っている:$db->prepare("SELECT * FROM teacher WHERE subject = ? ORDER BY id DESC");

私は<select>が変更されたときに呼び出されAJAX要求を作成しました。この要求は、上記のクエリを含むページに送信されます。この選択には、デンマーク語、英語、スウェーデン語のオプションが含まれています。

例:

iが<select>Danishを選択し、教師は、私はそれがユーザーの要求をMathesのように、データからDanishを取得するDanish_English_Swedishを含む行がある場合。

たぶん、あなたは爆発して爆発し、それを配列にしてそのようにチェックできますか?

すべてのソリューションは大歓迎です!

+2

[ゼロ、1または無限大](http://en.wikipedia.org/wiki/Zero_one_infinity_rule)の違反の可能性がある複数の値を単一の列にエンコードする場合は [データベースの正規化]( http://en.wikipedia.org/wiki/Database_normalization)。アンダースコアで区切られたものは、実際には不規則な形式です。 – tadman

+1

これらはデータベース内の別々の列にする必要があります。 –

+1

私はあなたのデータベースを正規化することに同意します。常に。今やれ。あなたの質問については、あなたの選択の 'WHERE'部分で' FIND_IN_SET( 'Danish'、REPLACE( '_'、 '、'、 'Danish_English_Swedish')) 'を使用することができます。 –

答えて

2

あなたはLIKE statement

$db->prepare("SELECT * FROM teacher WHERE column LIKE ? ORDER BY id DESC"); 

注1必要があります:それは_ciであれば、データベース/テーブルの照合をチェックする(大文字:Danish_English_Swedish

注2を含まれている列の名前に変更column名前を非表示の場合)、そうでない場合は、クエリを実行する前にstrtolowerを実行して、値をテーブルの小文字で保存したいと考えています。

注3:あなたのデータベース構造とテーブルの列は、それらを使って作業するためには最適化されていませんが、あなたの特定のケースの答えは上記です。

+0

ありがとう!私が必要としたのは –

+0

注3のプラス1! – Strawberry

関連する問題