dim565
Искусственный Интеллект
(423791)
4 года назад
Вы обрезали код функции для наглядности? Я не вижу передачу переменных $connect и $ip. В остальном ошибок нет, повторил у себя, работает:
<?
$connect = mysqli_connect('localhost', 'user', 'pass', 'db_name');
$ip = '127.0.0.1'; // для примера заполнил базу
var_dump (isIp($connect, $ip)); // возвращает int(1) bool(true)
function isIp($connect, $ip) {
$q = mysqli_query($connect, "select * from `base` where `ip` = '$ip' limit 1");
var_dump(mysqli_num_rows($q)); // возвращает int(1)
if(mysqli_num_rows($q) < 1) return false;
if(mysqli_num_rows($q) > 0) return true;
}
?>
ModestПрофи (533)
4 года назад
Я обрезал, так как убежден в их достоверности.
Собственно, если бы $connect не работал, то я не получил бы ответа здесь вообще: "var_dump(mysqli_num_rows($q)) выдает результат больше 0", согласитесь?
$ip выводит через var_dump IP равный адресу в БД конечно же.
ModestПрофи (533)
4 года назад
Ну а для еще большей полноты картины, дебаг:
var_dump($ip());
var_dump(isIp());
ModestПрофи (533)
4 года назад
Как откуда? var_dump($ip) и выдает как раз string(13) "адрес". Что-то удивило?)
Ordo Seclorum
Оракул
(58396)
4 года назад
Если результат меньше 1, вернёт false, то есть если будет 0 то всё равно вернёт false
Вот он и выполняет то, что первое выпало. Не могу проверить сейчас, но попробуй
ModestПрофи (533)
4 года назад
Так в том и дело, в БД есть как минимум одна запись и var_dump(mysqli_num_rows($q)) возвращает 1, а не 0...
var_dump(mysqli_num_rows($q)) выдает результат больше 0, и функция должна в данном случае вернуть true, но выводит постоянно false, как не крути условиями... Что я упускаю?
function isIp() {
$q = mysqli_query($connect, "select * from `base` where `ip` = '$ip' limit 1");
if(mysqli_num_rows($q) < 1) return false;
if(mysqli_num_rows($q) > 0) return true;
}
Такой вариант тоже не прокатывает
function isIp() {
$q = mysqli_query($connect, "select * from `base` where `ip` = '$ip' limit 1");
if(mysqli_num_rows($q) < 1) return false;
else return true;
}