-1

データベースから自分の位置cityとデータを取得したい。countrylocation

これは私のコードです:

$data = mysql_fetch_array(mysql_query("
SELECT 
u.`prename`,
u.`surname`,
DATE_FORMAT(u.`birthday`, '%d. %M') AS bday,
l.`city`,
l.`country`

FROM 
`users` AS u
LEFT JOIN `users_location` AS ul ON ul.`uid` = u.`id`
LEFT JOIN `locations` AS l ON l.`id` = ul.`location_id`

WHERE u.`id`='".(int) ($_GET['id'])."'"));

ではusers_location、どのユーザーがどの を持っているかが割り当てられますlocation_id

(users_location構造: iduidlocation_id)

にと名前locationsがあります。citycountry

ただし、クエリを使用するcitycountry空です。私の結合ステートメントのせいだと思いますか?

4

1 に答える 1

2

「LEFT JOIN tableAS t.

単純に「LEFT JOIN tablet」とします。

SELECT 
    u.`prename`, u.`surname`, DATE_FORMAT(u.`birthday`, '%d. %M') AS bday, 
    l.`city`, l.`country`
FROM  `users` u
LEFT JOIN  `users_location` ul ON  ul.`uid` = u.`id`
LEFT JOIN  `locations` l  ON  l.`id` = ul.`location_id`
WHERE u.`id` = {$id};

編集:そして、あなたがしたことをするだけでなく、データをチェックすることを検討してください。

効果のあるもの;

$id = (array_key_exists('id', $_GET) && is_string($_GET['id']) && ctype_digit($_GET['id']))
    ? $_GET['id'] : FALSE :
if ($id)
{
    SELECT 
        u.`prename`, u.`surname`, DATE_FORMAT(u.`birthday`, '%d. %M') AS bday, 
        l.`city`, l.`country`
    FROM  `users` u
    LEFT JOIN  `users_location` ul ON  ul.`uid` = u.`id`
    LEFT JOIN  `locations` l  ON  l.`id` = ul.`location_id`
    WHERE u.`id` = {$id};
}
else
{
    echo 'No valid ID was provided.';
}
于 2013-10-25T23:14:52.117 に答える