0

そのため、ユーザーからの ID を使用してデータベース (シリアル化) に格納された配列があります。

array1 = serialize(array(1,2,3,4,5));

異なる ID と配列サイズ (つまり 100 レコード) を持つデータベースにこれが 100 回ほどあるとしましょう。

array2 = serialize(array(6,2,8,1,3,10,12,60));
...

配列は、テーブル名 items と行 'lookup' を使用してデータベースに格納されます。

table 'items': (id,itemId,lookup)

ここで、1 つの ID (ID=2 など) に一致するシリアル化された配列を検索したいと考えています。一致するものについては、itemId が必要です。

"like %2%" で SQL クエリを試すこともできますが、それは %22% などにも一致します。

これを行う方法はありますか?

4

2 に答える 2

0

これが役立つかどうかはわかりませんが、

if(in_array("yourObject",$yourArray)){

于 2013-03-06T13:52:31.177 に答える
0

like演算子を使用します。

あなたが書いたように、「like %2%」を使用できますが、「22」も選択されます。重要なのは、文字列にも区切り文字を挿入することです。

シリアル化された文字列が次のようになっていると考えてください。

";1;2;3;4;5;"

これでたとえば2 の出現を検索できますがcolumn LIKE "%;2;%"、これは22 と一致しません。シリアル化された文字列の最後と最初に区切り文字を入力することを忘れないでください。

: この手法は、シリアル化された長い文字列ではかなり遅くなる可能性があります。テーブルに多くの行があると予想される場合は、別のスキームを検討する必要があります。多対多の関係を検索する方が良いかもしれません

于 2013-03-06T14:02:21.923 に答える