0

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

4

2 回答 2

1

将其分解成一个数组,这样您就可以获得各个值。

explode(",",$t_interest["u_interest"]);

然后你可以更容易地测试相等性。

于 2012-04-28T16:31:58.987 回答
0

你真的需要阅读数据库规范化。适当规范化的设计将使这个问题变得毫无意义。

至于您的问题,由于您被迫使用字符串操作,因此您必须检查多种不同的情况:

1) 你想要的数字在字符串的开头
2) 你想要的数字在字符串的结尾
3) 你想要的数字是字符串中唯一的数字
4) 你想要的数字在中间你的字符串:

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
于 2012-04-28T16:33:38.100 回答