определение того, является ли переменная на основе запроса базы данных нулевой в php

111
17

У меня есть следующий фрагмент кода php, в котором я пытаюсь получить вывод NULL, если php-запрос не дает каких-либо результатов, но если он дает результаты, у меня есть вывод NOT NULL.

 $dbconnSrc = pg_connect("host=$dbhost dbname=$dbname user=$dbuser password=$dbpass") or die ("Could not connect");

$sql="select area, radius from circle where level>50";

$res = pg_query($dbconnSrc, $sql);
var_dump(isset($res));
echo "$res\n";
while($row = pg_fetch_array($res, NULL, PGSQL_ASSOC))
{
$radius=$row["radius"];
print "radius is $radius\n";
if (isset($radius)){
echo "NOT NULL\n";
}
else
{
echo "NULL\n";
}
}

К сожалению, я не получаю желаемых результатов, поэтому мне было интересно, знает ли кто, кто должен настроить этот код, чтобы получить желаемые результаты.

спросил(а) 2021-01-19T14:00:48+03:00 6 месяцев, 1 неделя назад
1
Решение
78

Радиус $ всегда будет установлен, потому что вы его устанавливаете.

Попробуйте это вместо этого.

$dbconnSrc = pg_connect("host=$dbhost dbname=$dbname user=$dbuser password=$dbpass") or die ("Could not connect");

$sql="select area, radius from circle where level>50";

$res = pg_query($dbconnSrc, $sql);
var_dump(isset($res));
echo "$res\n";
while($row = pg_fetch_array($res, NULL, PGSQL_ASSOC))
{
// using $row directly here - no need to create another variable
print "radius is " . $row['radius'] . "\n";

// inspecting $row here for the entry first, then to see if it empty
if ( array_key_exists( 'radius', $row ) || empty( $row['radius'] ) ){
echo "NOT NULL\n";
}
else
{
echo "NULL\n";
}
}

ответил(а) 2021-01-19T14:00:48+03:00 6 месяцев, 1 неделя назад
46

Я никогда не использовал функции PostgreSQL, но, глядя на документацию, вы хотите использовать pg_fetch_all для получения всех результатов сразу.

$result = pg_query($dbconnSrc, $sql);

// get all the results
$arr = pg_fetch_all($result);

// note that null or empty array are falseys
if ($arr) {
echo "NOT NULL";
} else {
echo "NULL";
}

Falseys в PHP

ответил(а) 2021-01-19T14:00:48+03:00 6 месяцев, 1 неделя назад
-5

Вы забыли ".

Заменить это

$sql="select area, radius from circle where level>50;

с

$sql="select area, radius from circle where level>50";

ответил(а) 2021-01-19T14:00:48+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема