0

基本的にMySQLクエリの結果を取得する次のPHPがあります。

$q2 = "SELECT FIELD FROM TABLENAME WHERE ID = 1;";
$con = new mysqli($server, $user, $pass);
if (mysqli_connect_errno()) 
{
    $error = mysqli_connect_error();
    exit();
}
else
{   
    $res = mysqli_query($con, $q2);
    if ($res)
    {   
        while($row = mysqli_fetch_assoc($res))
        {
            PRINT "THERE WAS A RESULT HERE: "; 
        }
    }
    else
    {
        $error = mysqli_error();
        exit();
    }
    mysqli_free_result($res);   
};
mysqli_close($con);

ただし、場合によっては、空の値が返されます。これは、親アプリケーションの動作に基づいて有効ですが、その空の行を検出して「これは空の行でした:」を返すにはどうすればよいですか?

4

4 に答える 4

4

PHPマニュアルでmysqli_num_rows()を検索することをお勧めします。前のクエリで生成された結果セットに含まれる行数を確認できます。行数を使用して、結果を表示するか、「一致する結果がありません」というメッセージを表示するかを決定できます。

于 2012-10-29T16:18:54.840 に答える
2

これがお役に立てば幸いです。

if ($res)
{   
    if($res->num_rows) {
        while($row = mysqli_fetch_assoc($res))
        {
           PRINT "THERE WAS A RESULT HERE: "; 
        }
    }
    else {
          PRINT "THERE WAS A EMPTY ROW: "; 
    }
}

参照:php.net

于 2012-10-29T17:02:55.753 に答える
0

そのおかげで私は終わった:

$q2 = "SELECT FIELD FROM TABLENAME WHERE ID = 1;";
$con = new mysqli($server, $user, $pass);
if (mysqli_connect_errno()) 
{
    $error = mysqli_connect_error();
    exit();
}
else
{   
$res = mysqli_query($con, $q2);

$row_cnt = mysqli_num_rows($res);

if ($row_cnt == 0)
{
        PRINT "THERE WAS NO RESULT: "; 
 }

else
{    
if ($res)
{   
    while($row = mysqli_fetch_assoc($res))
    {
        PRINT "THERE WAS A RESULT HERE: "; 
    }
}
else
{
    $error = mysqli_error();
    exit();
}
mysqli_free_result($res);   
}
};
 mysqli_close($con);
于 2012-10-29T17:19:54.470 に答える
0

私のphp関数クエリハンドル:

private function query($sql_query){

        $result = $this->connection->query($sql_query);

        if(!$result){           //query fail
            throw new Exception($this->connection->error.$sql_query);
        }else {//                 "SUCCESS";
            if(!$result->num_rows)
            {
                throw new Exception("THERE WAS NO RESULT: "); 
             }
            for ($res = array(); $tmp = $result->fetch_array(MYSQLI_BOTH);){ 
                $res[] = $tmp;                
            }
           return $res;
        }
    }
于 2015-05-25T11:50:19.463 に答える