在JOINED时将不存在的行检索为NULL

问题描述 投票:0回答:1

我只是想知道,如何检索表中不存在的行并将其返回为NULL?

简要

例如,在下面的代码中,它只返回skill_players中存在的数据,这不是我想要的结果。我想要的结果是,输出现有数据以使其从skill_players获得其值,如果不存在则将值输出为NULL,以便我可以将IFNULL用于以后的目的。

表设计

skills_type

skill_players

目前的结果

[Skill Name]        | [Value]
TotalStoreRobbed    |  8

预期结果

[Skill Name]        | [Value]
TotalRape           |  NULL
TotalBeenRaped      |  NULL
TotalRob            |  NULL
TotalBeenRobbed     |  NULL
TotalStoreRobbed    |  8
TotalCuffEscape     |  NULL
TotalArrest         |  NULL
TotalBeenArrested   |  NULL

//fetching item data
$query =
"
    SELECT
        skill.value, type.skill_name
    FROM
        skills_player AS skill
    LEFT JOIN
        skills_type AS type
    ON
        skill.fk_skill_id = type.skill_id
    WHERE
        skill.fk_user_id = ?
";
if($stmt = $sqlHandle->prepare($query))
{
    $stmt->bind_param("i", $acc_ID);
    $stmt->execute();
    $res = $stmt->get_result();

    $skills = null;
    if($res->num_rows > 0) {
        while($row = $res->fetch_assoc()) {
            $skills[] = $row;
            print_r($row);
        }
    }
}
else {
    $error = $sqlHandle->errno . ' ' . $sqlHandle->error;
    echo $error;
}

谢谢,帕特里克!

php mysql mysqli prepared-statement
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.