繁体   English   中英

面向未来的php / sql查询功能

[英]Future-proofing functions for php/sql queries

我正在尝试为使用php运行的常见查询和其他操作编写一系列实用程序功能。

我这样做的原因是为了使我的应用程序可以轻松地在PDO,mysqli及其后继之类的产品之间升级。

在我开始采用这种方法之前,我想知道是否有些PHP专家可以回顾这种方法并告诉我您的想法-这对将来的证明和可升级性来说是一个好主意吗? 这将如何影响性能? 将来我会以任何方式限制我的应用程序吗?

//BASIC QUERY EXECUTION (ESCAPED)
function qry($sql)
{
    $sql = $db->real_escape_string($sql);
    if(!$result = $db->query($sql))
    {
        die('There was an error running the escaped query [' . $db->error . ']');
    }

    return $result;
}

//PREPARE AN SQL STATEMENT
function prep($sql)
{
    $statment = $db->prepare($sql);
    return $statement;
}

//BIND A PARAMETERS AND VARIABLE TYPE
function bnd($statement,$parameter,$type)
{
    $statement->bind_param($type, $parameter);
    return $statement;
}

//EXECUTE PREPARED QUERY (UNESCAPED)
function ex($statement)
{
    if(!$result = $statement->execute())
    {
        die('There was an error running the prepared query [' . $db->error . ']');
    }
    return $result;
}

//FETCH ARRAY
function ftch($result)
{
    $row = $result->fetch_assoc();
    return $row;
}

//GET NUMBER OF ROWS
function num($result)
{
    $num = $result->num_rows;
    return $num;
}

//FREE THE RESULT
function fre($result)
{
    $result->free();
}

只是一些准则

  1. 创建一个类,而不是独立函数集
  2. 无论real_escape_string函数不保护任何内容 ,均不应用于此目的。 PDO根本没有这样的功能。 将此函数应用于整个查询绝对没有任何意义。
  3. 因此, qry()函数根本无法工作。
  4. $ db超出范围也将无法使用。
  5. 请不要死()! 抛出异常。 PDO已经做到了 ,不需要代码

其余的一切都还不错,尽管我会摆脱bnd()prep()函数,以便在一个ex()调用中全部完成。 而且,我将使用单独的函数来获取单独的结果类型,例如标量,行,行数组和资源。 这是我正在谈论的示例:基于非常相似概念的safeMysql类

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM