mysql准备声明IFNULL

时间:2015-07-20 16:30:22

标签: php mysql prepared-statement

我有这个功能,它从数据库中取出“flightize”并用它来设置一个对象。 我需要包含一个故障保护,如果DB中没有任何航班大小,则会使航班强度= 6。 我读到我会想要使用IFNULL,但不幸的是我不能让它工作。 有人可以帮助我吗?

此外,使用IFNULL或为这个“航班”创建一个新的表条目会更好吗,以便将来的选择有用吗?

public function getFlightSize($gamedata){
    $stmt = $this->connection->prepare(
        "SELECT 
            shipid, flightsize
        FROM 
            tac_flightsize
        WHERE 
            gameid = ?"
        );

    if ($stmt){
        $stmt->bind_param('i', $gamedata->id);
        $stmt->bind_result($shipid, $flightsize);
        $stmt->execute();

        while($stmt->fetch()){
            $flight = $gamedata->getShipById($shipid);
            $flight->flightSize = $flightsize;
            $flight->populate();
        }

        $stmt->close();
    }
}

1 个答案:

答案 0 :(得分:0)

SELECT 
        shipid, IFNULL(flightsize,6) AS flightsize
    FROM 
        tac_flightsize
    WHERE 
        gameid = ?

应该可以工作,但是如果你的桌子中没有gameid,你将根本得不到任何记录,你将不得不处理你的PHP代码中的情况。