从mysql中查找字符串中的值

时间:2014-03-04 20:57:29

标签: php mysql

我是php新手,所以我需要帮助:

我有一个像1,2,3,4,5

这样的值单元格

例如,我需要检查值3是否在该单元格中。

所以,这是我的代码:

$article = $db->query("SELECT users FROM products WHERE id = $product_id");
while ($data = $article->fetch_object()) {
$users = $data->users;
}

$number_that_i_need_to_check_if_is_in_string = 3;
$users = explode(',',$users);
foreach ($users as $specific) {
    //i dont know what to do here...
}

我不知道如何检查该字符串中的数字3 ......

提前thx。

4 个答案:

答案 0 :(得分:1)

使用您的代码,您可以执行此操作

foreach($users as $specific) {
  if($number_that_i_need_to_check_if_is_in_string == $specific) {
    //do something here.
  }
}

有更好的方法可以做到这一点,包括编写查询来搜索您,或使用array_search

答案 1 :(得分:0)

您可以像这样使用FIND_IN_SET mysql函数

$article = $db->query("SELECT users FROM products WHERE id = $product_id AND FIND_IN_SET(3, users)");

此查询将为您提供id=$product_idusers字段中包含3的所有行。

答案 2 :(得分:0)

您可以将其包含在查询中

SELECT users FROM products WHERE id=$product_id AND FIELD_IM_CHECKING=$number_that_i_need_to_check_if_is_in_string

或......

使用您要查找的字符串作为数组的索引。

while($data=$article->fetch_object()){
 $users[$data->FIELD_IM_CHECKING][]=$data->users;

最终得到一个数组,其中包含您要查找的值作为索引。所以$ users [3]将是你正在寻找的领域中所有'3'的用户......

下次请做一个更好的问题。既然你没有具体的数据和查询我的答案似乎也很模糊......

答案 3 :(得分:0)

您不需要foreach循环。获得数组中的所有值后,只需使用in_array()函数: http://us3.php.net/in_array

你的while循环也有问题。如果有多行返回,你编写它的方式只会用下一个值覆盖每个值,所以$ users只能保存一个值,你就不能爆炸它。

您可以做的只是通过将该行更改为以下内容将所有值直接读入数组:

$users[] = $data->users;

然后

if(in_array(3,$users)){
    .....
}