簡體   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