gpt4 book ai didi

php - 正确使用PDO过程不使用全局

转载 作者:行者123 更新时间:2023-11-29 07:53:47 25 4
gpt4 key购买 nike

我正在尝试 PDO,目前有以下代码,但我收到 Call to a member function prepare() on a non-object 并且我不想使用全局.

我是使用类还是将其作为变量传递?

Config.php

function connection()
{
try
{
$host = 'localhost';
$dbuser = '';
$dbpass = '';
$dbname = '';
$dbConnection = new PDO("mysql:host=" . $host . ";dbname=" . $dbname.";", $dbuser, $dbpass);
return $dbConnection;
} catch (PDOException $error)
{
echo $error->getMessage();
return FALSE;
}
}

Functions.php

<?php

include('config.php');

$db = connection();

function listCars()
{
$query = $db->prepare("SELECT `id` `rego` `engineSize` `type` `colour` `year` `additionalFeatures` FROM `cars`");

$result = $query->fetchAll();

return $result;
}

?>

Index.php

<?php  
include('assets/misc/functions.php');

var_dump(listcars());

?>

最佳答案

你必须将 db 变量加载到你的函数中,在 Functions.php 中,看看这个:

函数.php

    include('config.php');

$db = connection();

function listCars($db){

$query = $db->prepare("SELECT `id` `rego` `engineSize` `type` `colour` `year` `additionalFeatures` FROM `cars`");

$result = $query->fetchAll();

return $result;
}

?>

Index.php

<?php  
include('assets/misc/functions.php');

var_dump(listcars($db));

?>

但是,如果您正在寻找更面向 OOP 的方法,请尝试以下操作:

<?php 

class Cars {
protected $db;

public function __construct(PDO $db){
$this->db = $db;
}

public function listCars(){
$query = $this->db->prepare("... query ...")->execute();
return $query->fetchAll();
}
}

include('config.php');

$cars = new Cars(connection());

try {
var_dump($cars->listCars());
} catch (PDOException $e) {
echo $e;
}
?>

关于php - 正确使用PDO过程不使用全局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25675547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com