gpt4 book ai didi

PHP PDO - Uncaught Error : Call to a member function prepare() on null

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:10 24 4
gpt4 key购买 nike

我正在尝试使用配置文件中的数据库凭据运行查询,但我不断收到以下错误:Uncaught Error: Call to a member function prepare() on null

config.php 文件:

$host = 'xxxx';
$dbname = 'xxxx';
$username = 'xxxx';
$password = 'xxxx.';

try {
$conn = new PDO("mysql:host=$host; dbname=$dbname;", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "$e->getMessage()";
}

函数.php

session_start();
include 'config.php';

function getAddress(){
$output = "";
if (isset($_SESSION['userid'])){
$userid = $_SESSION['userid'];
try {
$stmt = $conn->prepare('SELECT address FROM users WHERE id = :userid');
$stmt->bindParam(':userid', $userid);
$stmt->execute();
$result = $stmt -> fetch();
if(empty($result)){
$output = "Your information cannot be retrieved";
} else {
$output = $result['address'];
}
} catch (PDOException $e) {
$output = $e->getMessage();
}
$conn = null;
} else {
$output = "An error has occured, please try again";
}
return $output;
}

index.php(html页面)

<?php 
session_start();
include 'functions.php';
?>
...
<p><?php echo getAddress();?></p>
...

所以我的索引页面运行一个函数 (getAddress()) 来自 functions.php 脚本,它使用存储在 config.php 中的凭据连接到数据库。

最佳答案

由于函数调用的范围,您需要将连接传递给函数。首先,设置函数调用以接收连接:

function getAddress($conn) 

$conn 这里只是变量的方便名称,它将使用您在函数中的位置。将连接传递给函数是使连接在函数中可用的首选方法。应避免使用 global 关键字。

现在,使用您建立的连接变量调用该函数:

echo getAddress($conn);

$conn 这是来自您包含的文件的成功连接。这会将连接置于您的函数范围内,如果其他条件相同,您的查询应该会成功。

关于PHP PDO - Uncaught Error : Call to a member function prepare() on null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44957405/

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