我有3张桌子,
user - contains user_id | username | fullname | email etcc
user_profile - contains entry_id |user_id| profile_image_id| user_location etcc
user_profile_images - contains image_id| user_id | file_path | file_thumb | date etcc
当用户注册时,所有详细信息都进入 users 表,user_id 也被添加到 user_profile 表中,其余设置默认为 NULL,直到用户添加一些配置文件信息。
我在 model_users 中有一个查询来从这三个表中获取所有用户的数据,它是这样的;
$this->db->where('users.user_id', $user_id)->select('*')->from('users');
$this->db->join('user_profile', 'user_profile.user_id = users.user_id', 'left');
$this->db->join('user_profile_images','user_profile_images.image_id = user_profile.profile_image_id','left');
只有当 user_profile 中的 profile_image_id 字段不为空时,即用户上传了图片时,它才能正常工作。在该字段为空的情况下,即使返回所有其他数据,也不返回用户 user_id。
我可以看到为什么会这样,因为我的联接查询需要字段 profile_image_id 但目前我的解决方法是将 user_profile 中的 profile_image_id 设置为 1(默认),这是默认图像,并且 image_id 为 1,user_id 为 0这是一般的默认图像。但我仍然无法克服这样一个事实,即我需要更新该查询以使其不再是黑客攻击。你们有什么想法吗?