我在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
如果我使用上面的命令它告诉我用户有两个值。
14,145
看起来PHP strstr命令告诉我两个值,因为这两个值有14个数字。
那么,你能帮助我为什么会这样吗?
如果你想要更多的php行,我可以发布它们。
答案 0 :(得分:1)
将它分解为数组,这样就可以获得各个值。
explode(",",$t_interest["u_interest"]);
然后你可以更容易地测试平等。
答案 1 :(得分:0)
你真的需要阅读database normalization。正确规范化的设计会使这个问题没有实际意义。
至于你的问题,既然你被迫使用字符串操作,你将不得不检查多种不同的情况:
1)你想要的数字是在字符串
的START处
2)你想要的数字是在字符串的结尾处
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