0

我有两个问题,只是为了逻辑:

我需要一个包含视频游戏的数据库(名称、封面、描述、平台、类型)

我怎样才能使流派可以有多个值?

例如:Fallout 3 是 FPS / RPG,但如果我只查询 FPS 或 RPG,我希望能够显示它。或者只是有一个页面genre.php?genre=FPS 显示所有FPS(带有FPS/RPG 或FPS/MMO 游戏)

一个查询是否LIKE足够?

第二个问题:

我有一个带有不同复选框的表单,用于将其发送到 PHP 搜索脚本:

search.php?q=dead+island&PC=on&PS3=on&Xbox360=on&Wii=on

如何创建 SQL 查询而不必为所有可能性编写它?知道有很多平台(NES,N64等)

示例(简化):

if(PC=on) = SQL search in platform PC

if(PC=on and PS3=on) = SQL search in platform PC and PS3

谢谢你的帮助!

4

1 回答 1

4

对于第一个: 你可以有很多选择,

  • 如果流派字段最多包含 2 个值,您可以在创建表时使用 2 个字段 (genre1,genre2)。
  • 如果游戏和流派存在一对多(可以超过 2 个)关系,您可以为流派创建一个单独的表(带有游戏的外键)。
  • 或者,正如您所说,使用LIKE '%str%'// 如果最多 2 个值更好

对于第二个:

创建一个查询字符串,[此示例在 php 中]

$sql="Select * from table_name where";
if($_Get['pc']=="on"){
    $sql+=" platform='pc' OR ";    
}

if($_Get['ps3']=="on"){
    $sql+=" platform='ps3' OR";    
    }
// and so on for as many conditions
// at last
$sql+=" 0; "; // This line is necessary because of use of 'OR' before

希望这可以帮助!!

于 2013-05-10T15:50:02.243 回答