0

このようなMy-Sql列にデータがあります

T_interest
1,14,49,145,203,302

個人的な興味のあるキーワードの各値を表します。

値を抽出して、チェックボックスの値があるかどうかを区別しようとしました。

if(strstr($u_interest['u_interest'], ','.$row['i_idx'])):
$selected = 'checked';

これが私が現在使用しているphpコマンドです。

しかし、データベースから正確な値を抽出しません。

データに14の数字があるかどうか、またはこのユーザーテーブルからかどうかを確認したいとしましょう

T_interest
1,14,49,145,203,302

上記のコマンドを使用すると、ユーザーには2つの値があることがわかります。

14,145 

PHP の strstr コマンドが 2 つの値を教えてくれるように見えます。これら 2 つの値は 14 個です。

では、なぜこれが起こっているのか教えていただけますか?

より多くのphp行が必要な場合は、投稿できます。

4

2 に答える 2

1

それを配列に分解すると、個々の値が得られます。

explode(",",$t_interest["u_interest"]);

そうすれば、同等性をはるかに簡単にテストできます。

于 2012-04-28T16:31:58.987 に答える
0

データベースの正規化についてよく読む必要があります。適切に正規化された設計は、この問題を意味のないものにします。

あなたの質問については、文字列操作を使用する必要があるため、複数の異なるケースを確認する必要があります。

1) 必要な数字は文字列の START にあります
2) 必要な数字は文字列の END にあります
3) 必要な数字は文字列
の唯一の数字です 4) 必要な数字は文字列の MIDDLE にありますあなたの文字列:

SELECT ...
WHERE
    (T_Interest = 14) OR   // only number
    (T_Interest LIKE '14,%') OR /// at the begnning
    (T_Interest LIKE '%,14') OR // at the end
    (T_Insertest LIKE '%,14,%') // in the middle
于 2012-04-28T16:33:38.100 に答える