【问题标题】:How to make an SQL query from form checkboxes?如何从表单复选框进行 SQL 查询?
【发布时间】:2013-05-05 08:18:42
【问题描述】:

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

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

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

例如: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

感谢您的帮助!

【问题讨论】:

    标签: sql forms checkbox


    【解决方案1】:

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

    • 如果流派字段最多包含 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
    

    希望这会有所帮助!

    【讨论】:

    • 是的,你必须注意 Sql Injection。
    • 那会很长,但应该可以!谢谢!不过第一个问题有什么问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    相关资源
    最近更新 更多