0
請讓我有一個表,其中有兩個字段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>
我想選擇其中的字段值的序列化領域存在的數據,所以我認爲在MySQL中使用REGEXP
,我已經試過
$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 ";
但這不符合我的需要。
我該如何正確操作?
只使用'Value LIKE'%{$ _ POST ['value'] [$ i]}%'' – 2013-07-17 08:19:33
如果你沒有*結構化數據存儲在那裏,你爲什麼要使用MySQL?現在你不能做你想做的事情,你認爲你的方法是不正確的。 XY問題,請查看。 –
@Akam,謝謝我將只使用LIKE,它似乎完美無缺! – Alpha