PHP Function mysql select passing globaly


PHP Function mysql select passing globaly

我正在尝试设置一个函数,该函数将使我从数据库中选择mysql,因为我将多次使用此查询。所以我想与其在每个 php 文件中编写相同的选择代码,我可以将其放入函数中并在需要时调用它。到目前为止,我在不同的文件中使用它来从数据库中获取结果:

$stmt_query = $db->prepare("SELECT * FROM table1 WHERE memberID='$id_memberID'");
    $stmt_query->execute();
    $row_query = $stmt_query->fetchAll(PDO::FETCH_ASSOC);
foreach ($row_query as $show_query) {
    $id = $show_query['id'];
    $model = $show_query['model'];
    $year = $show_query['year'];
}

然后

echo $id; echo $model; echo $year;

问题是,如何在每个不同的 php 文件中多次执行上述操作的情况下实现相同的目标?

像你建议的那样编写一个函数,只需将你的$db var声明为全局,因为php将函数范围限制为函数。

function getAll($id_memberID) {
    global $db;
    // your code
}

在代码中调用此函数...

 function query_fetch(){     
    $stmt_query = $db->query("SELECT * FROM table1 WHERE memberID='$id_memberID'");
        $row=$stml_query->fetch();
    return $row;
    }

然后,您只需在 while 循环中使用它即可获取数据。

function query_fetch();
    while($row){
     $id = $row['id'];
        $model = $row['model'];
        $year = $row['year'];
    }

或者,您可以像使用时一样使用foreach

而且这也不多...如果需要,您可以重复。

 $stmt_query = $db->query("SELECT * FROM table1 WHERE memberID='$id_memberID'");        
while($row=$stml_query->fetch()){
 $id = $row['id'];
            $model = $row['model'];
            $year = $row['year'];
}

我会远离使用全局变量。 全局变量比单例更糟糕,单例比依赖注入 (DI) 更糟糕。如果可以,请立即使用依赖项注入容器转到 DI。本文提供了如何使用 DI http://paul-m-jones.com/archives/6014 的基本示例 基本上,您将为应用程序设置引导脚本,声明 DI 容器,创建连接,将连接添加到容器,然后将其从容器中取出并将其作为参数传递给需要它的任何方法。有一堆易于设置和使用的PHP DI容器。PHP-DI和Pimple就是两个很好的例子。