我是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。答案 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_id
和users
字段中包含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)){
.....
}