PHP函数mysql选择传递全局
我正在尝试设置一个函数,从数据库中获取一个mysql select,因为我将多次使用此查询。所以我想,不用在每个php文件中编写相同的select代码,我可以将其放入一个函数中,并在需要时调用它。 到目前为止,我在不同的文件中使用它从数据库中获取结果: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
$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。我会和环球一起尝试,并让你知道。再次感谢。