PHP,从mysql排列的数据中找到确切的值

时间:2012-04-28 16:29:22

标签: php

我在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行,我可以发布它们。

2 个答案:

答案 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