と の 2 つのフィールドを持つテーブルがID
ありValue
ます。フィールドValue
には、php を使用してシリアル化された配列が含まれています。
------------------------------------------------------------------------
ID | Value |
------------------------------------------------------------------------
1 | a:2:{s:1:"0";s:12:"dHJhbnNwb3J0";s:1:"2";s:16:"Y2VudHJlIHZpbGxl";}|
------------------------------------------------------------------------
2 | a:1:{s:1:"0";s:16:"Y2VudHJlIHZpbGxl";} |
------------------------------------------------------------------------
3 | a:2:{s:1:"0";s:12:"Y29tbWVyY2U=";s:1:"2";s:12:"dHJhbnNwb3J0";} |
------------------------------------------------------------------------
私のフォームにはValue
、ユーザーが複数の選択肢を選択できるチェックボックスという名前のフィールドがあり、データは次の名前の配列で送信されますvalue[]
。
<form>
<input type="checkbox" name="value[]" value="dHJhbnNwb3J0" /> Value One
<input type="checkbox" name="value[]" value="Y2VudHJlIHZpbGxl" /> Value Two
<input type="checkbox" name="value[]" value="Y29tbWVyY2U" /> Value Three
<input type="submit" name="submit" value="Look for" />
</form>
シリアライズされたフィールドにフィールド値が存在するデータを選択したいのでREGEXP
、mysqlで使おうと思って試してみました
$clause = '';
for($i = 0 ; $i < $c; ++$i)
$clause .= " OR Value REGEXP '{$_POST['value'][$i]}';
// This is the query used :
$q = " SELECT * FROM TABLE WHERE value = '{$_POST['value'][0]}' $clause ";
しかし、これは私が必要とするものと一致しません。
正しく行うにはどうすればよいですか?