【问题标题】:Most efficient way to use mysql results with php classes将mysql结果与php类一起使用的最有效方法
【发布时间】:2013-07-15 01:00:54
【问题描述】:

终于花时间去乱搞php类,好奇想知道下面这样的东西是不是重复使用mysql结果最有效的方法:

class ProjectDetails {
private $ProjectDetails;
function getDetails($projectid) {
    $query_GetDetails = 
    "SELECT * FROM projects WHERE ProjectID = $projectid";

    $results_ProjectDetails = mysql_query($query_GetDetails);
    $ProjectDetails = mysql_fetch_array($results_ProjectDetails);
    $this->ProjectDetails = $ProjectDetails;

}

    function getDetail($el) {
         $this->ProjectDetails[$el];
    }

}

在阅读该主题时,我发现有些人会在他们想要的每个结果函数中调用他们的查询函数,在我的例子中,它会在 GetDetail() 中调用 GetDetails(),只是为了访问返回的数组.假设上述发布的方法更有效,我是否正确?另外,有没有更好的方法来做到这一点?

一如既往的感谢,

【问题讨论】:

  • 正如利亚姆所说,不要使用 mysql_query。准备好的语句是最好的,并且可以预编译查询,因此如果您运行相同的查询(多次使用不同的参数),它可以缓存查询。我不担心获得绝对最快的方法 - 如果您使用数据库做很多事情,我会推荐一个框架或库。例如,看看Zend DB。为开发者节省大量时间,这比节省一点 CPU 时间重要得多

标签: php mysql class oop


【解决方案1】:

首先不要使用 mysql_query 它是贬值的!使用 PDO 也不要多次请求您的连接。我不确定这是否是最好的方法,但我发现更好的方法是拥有一个数据库类。有一个连接到您的数据库的构造函数,然后有一个查询函数,您可以在查询中传递并返回结果,因此您只需要 2 个方法! http://php.net/manual/en/class.pdo.php上有几个类的例子

【讨论】:

  • 谢谢大家,我会试试这个 PDO 的东西,看看我在哪里。我只是不想从一开始就养成坏习惯。
  • 只是一个简短的注释,以节省您的时间 pdo 执行接受带有键的数组以匹配键 (item =>) 与放置 (:item)
【解决方案2】:

您不会在这里得到关于什么是“最佳”或“最有效”的明确答案,因为这实际上取决于您的应用程序的需求 - 数据访问模式、您的数据大小可以使用,您对访问数据的延迟的容忍度等。

您总是需要权衡取舍。例如,如果您将该结果数组存储在类中,您将需要利用内存来执行此操作。因此,如果数组很小,并且您需要通过处理请求频繁访问数据,这可能是您最好的选择。但是,如果数组非常大,并且您有很高的并发请求将这些数据存储在内存中,那么您可能不希望分配那么多服务器内存来存储每个请求的结果。谁知道呢,对于某些结果,您甚至可能最好使用缓存。

最重要的是,您确实必须了解您正在做出的权衡并在您的环境中对其进行测试,以确定最能满足您的目标的方法,无论是减少响应延迟、减少内存使用还是其他什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2010-09-28
    • 2010-12-21
    相关资源
    最近更新 更多