PHP函数mysql选择传递全局

PHP函数mysql选择传递全局,php,echo,Php,Echo,我正在尝试设置一个函数,从数据库中获取一个mysql select,因为我将多次使用此查询。所以我想,不用在每个php文件中编写相同的select代码,我可以将其放入一个函数中,并在需要时调用它。 到目前为止,我在不同的文件中使用它从数据库中获取结果: $stmt_query = $db->prepare("SELECT * FROM table1 WHERE memberID='$id_memberID'"); $stmt_query->execute(); $ro

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

$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'];
}

我不会使用globals。全局变量比单个变量更糟糕,后者比依赖注入(DI)更糟糕。如果您有能力,请立即使用依赖项注入容器转到DI。本文给出了一个如何使用DI的基本示例,您可以为应用程序设置一个引导脚本,声明DI容器,创建连接,将连接添加到容器中,然后从容器中取出,并将其作为参数传递给任何需要它的方法。有许多易于设置和使用的PHPDI容器。PHP-DI和Pimple是两个很好的例子。

我没有使用任何globals,因为我知道它的邪恶一面,谢谢。上面的方法不起作用。我正在function.php中使用函数fetch_query,并试图调用另一个文件中的$row。按照您描述的方式操作不会返回任何内容。您可能需要使用
global
关键字,否则
$db
将被视为本地范围内的var。因此,如果您避免使用
global
,请使用最后一种方法。它肯定会起作用的…感谢您注意到这一点…:)但是我读过很多关于使用globals的文章,他们不推荐使用globals。我会和环球一起尝试,并让你知道。再次感谢。