gpt4 book ai didi

php - PHP 中包含类时无法调用 MySQL

转载 作者:行者123 更新时间:2023-11-30 00:29:20 27 4
gpt4 key购买 nike

我在包含时遇到问题。我正在写某种博客,此时它看起来像这样:

index.php
article.php
class/art.class.php

让我们关注article.php,它看起来像这样:

<?php
$mysqli = new mysqli("","","",""); // here are my connection details
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}

$mysqli->query("SET NAMES 'utf8'");
require("class/art.class.php");
$art = new Article();
print_r($art->get_art(trim($_GET['id'])));
$mysqli->close();
?>

art.class.php 是这样的:

<?php
class Article {
function get_art($id) {
if(!is_numeric($id)) {
header("Location: index.php");
die("<h2>ID isn't numeric, cannot go on.</h2>'");
}
if($result = $mysqli->query("SELECT * FROM `articles` WHERE id='$id';")) {
while($row = $result->fetch_array(MYSQLI_ASSOC)) {
$art = $row;
}
$result->close();
}
return $art;
}
}
?>

问题是来自 MySQL 的响应。抱歉,我的意思是没有回应。并且没有错误。我发现我需要将 mysql 连接代码添加到类代码中。但为什么?我如何连接到数据库一次并从任何地方调用它,甚至从包含的类中调用它?如果我的英语不好,很抱歉..

最佳答案

Article 类中的 get_art 函数无法访问其范围之外的变量:请参阅答案 here .

为了解决您的问题,您可以在实例化 $mysqli 对象时将其传递给 Article 类的构造函数来提供对它的访问:

文章.php:

$mysqli = new mysqli("","","",""); // your connection details
$art = new Article($mysqli);

art.class.php:

class Article {

protected $mysqli;

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

function get_art($id) {

// Replace $mysqli with $this->mysqli everywhere you need to
// make database calls

}
}

关于php - PHP 中包含类时无法调用 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22635648/

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