Записал в в одно поле mysql три числа(21,22,23). Через цикл хочу проверить, совпадает ли число из данного поля базы данных с некоторым числом. У меня не получилось. Когда проверяю через gettype показывает (string NULL NULL).
$res=mysql_query("SELECT dostup FROM users where id='$id'",$db);
$re=mysql_fetch_array($res);
for($i=0;$i<=count($re);$i++){
echo gettype($re[$i]);
};
когда через echo показываю, все числа нормально выводятся. Но условие if выполняется только для первого(21) числа. В базе данных записаны через запятую. Объявлены как varchar(пробовал int, тоже самое).
Когда хочу принудительно объявить как целое число, уходит в бесконечный цикл(integerintegerintegerinteger...и т.д).
$res=mysql_query("SELECT dostup FROM users where id='$id'",$db);
$re=mysql_fetch_array($res);
for($i=0;$i<=count($re);$i++){
settype($re[$i],"integer");
echo gettype($re[$i]);
};
Вот как я хотел сделать.
$res=mysql_query("SELECT dostup FROM users where id='$id'",$db);
$re=mysql_fetch_array($res);
$chislo=22;
for($i=0;$i<=count($re);$i++){
if($re[$i]==$chislo){
echo "Есть совпадение";
break;
}
};
В том случае, если у Вас в БД данные записаны как `21,22,23'
В базе данных записаны через запятую.
То надо сначала разбить результат на массив, а потом провести поиск по этому массиву, и так для каждой записи.
Пример:
$res=mysql_query("SELECT dostup FROM users where id='$id'",$db);
$re=mysql_fetch_array($res);
$chislo=22;
for($i=0;$i<=count($re);$i++){
$temp = explode(',', $re[$i]); //Разбиваем данные из строки БД
foreach ($temp as $k=>$value){ //Проводим поиск по полученному массиву
if($value==$chislo){
echo "Есть совпадение";
break;
}
}
};
Для теста пример:
$re = array('21,20,23', '24,25,26', '27,28,29'); // Аналог полученных данных в mysql, если их много.
$chislo=22;
for($i=0;$i<=count($re);$i++){
$temp = explode(',', $re[$i]);
foreach ($temp as $k=>$value){
if($value==$chislo){
echo "Есть совпадение";
break;
}
}
};
Вот как я решил эту проблему.
$res=mysql_query("SELECT dostup FROM users where id='$id'",$db);
$re=mysql_fetch_array($res);
$chislo=22;
$p = explode(",","$re[0]");
for($i=0;$i<count($p);$i++){
settype($p[$i],"integer");
if($p[$i]==$chislo){echo "есть совпадение";
}
}
Наверное ещё можно было бы через FIND_IN_SET, но я не стал копаться.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть вопросы относительно написания своей CMSЗнаю примеров много и вообще такие системы не очень-то и жалуют
Не знал как конкретнее назвать топик, так что извеняйте
Дело в том, что я вывожу число 10000000000000000000000000000000 из базы, после обработки функцией number_format оно превращается в 9999