在php中确定基于数据库查询的变量是否为null

在php中确定基于数据库查询的变量是否为null,php,postgresql,if-statement,Php,Postgresql,If Statement,下面是一段php代码,如果php查询不产生任何结果,我将尝试使输出为NULL,但如果它确实产生结果,则输出为notnull $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_q

下面是一段php代码,如果php查询不产生任何结果,我将尝试使输出为NULL,但如果它确实产生结果,则输出为notnull

 $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";
    }
}
不幸的是,我没有得到想要的结果,所以我想知道是否有人知道该由谁来调整此代码以获得想要的结果。

您忘记了一个

替换这个

$sql=从标高>50的圆选择面积、半径


$sql=从标高>50的圆选择面积、半径

$radius将始终设置,因为您正在设置它

试试这个

$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's empty
    if ( array_key_exists( 'radius', $row ) || empty( $row['radius'] ) ){
        echo "NOT NULL\n";
    }
    else
    {
         echo "NULL\n";
    }
}

我从未使用过PostgreSQL函数,但是,看看文档,您希望使用它一次获取所有结果

$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";
}

表中是否有radius不为NULL且级别>50的实际行?SQL语句末尾缺少双引号。除此之外,当您通过客户端/命令行运行SQL时,是否获得了预期的结果?缺少的引号是否只是一个错误的粘贴?顺便说一句,你离开岗位了吗?有人发布了那个缺失的报价的答案,你知道吗?根据你的代码,你的问题似乎不清楚。如果你只关心自己是否有结果,那你为什么要在每个结果上循环——这是一个简单的if-ELSE?好像你在试图做一些与你所说的不同的事情。@Mikey我注意到了编辑修复。OP没有响应我上面的评论或任何其他评论,因此我们不知道他们的代码中是否缺少它。对于它也提供了一个答案,不管它是否仍然存在,那么。。。如果它被删除,您将无法看到它。正如你所说;这个问题有点不清楚,很可能是坏浆糊。