代码之家  ›  专栏  ›  技术社区  ›  Shoe

使用只检查get和post变量的db类?

  •  2
  • Shoe  · 技术社区  · 14 年前

    我已经创建了一个数据库类,通过数组可以生成所有内容,忘记了转义字符串。 那门课的作业是这样的:

    $db->q(array(
    'SELECT' => 'username',
    'FROM' => USERS_TABLE, 
    'WHERE' => array('user_id' => 1)
    ));
    

    在那个函数(db::q())中,我在创建并执行sql字符串之前检查所有需要检查的内容。 顺便说一下,我认为这不是真正需要的。所以我想用一个函数 request_var($name, 'POST'/'GET')

    $db->query("SELECT username FROM ".USERS_TABLE." WHERE user_id = 1");
    

    . 够了吗?我应该用 db::q() request_var() ? 我应该两者都用吗?

    2 回复  |  直到 14 年前
        1
  •  0
  •   Shoe    12 年前

    根据我的经验,你不只是全面检查所有POST/GET变量。我通常在创建查询时检查以下原因:

    1. 假设当时没有进入查询,则不会有额外的开销
    2. 我知道当我知道数据将进入哪个列(验证int、string、float等)时,需要查看哪些数据
        2
  •  2
  •   Shoe    12 年前

    您需要确保使用数据库的适当函数转义字符串。例如,通过使用 pg_escape_string

    从您的代码片段来看,您似乎正在接受表名作为GET/POST的一部分?为什么前端需要了解数据库表?这种知识通常只需要服务器端代码。