PHP中的OO和mysqli

PHP中的OO和mysqli,php,mysql,oop,mysqli,Php,Mysql,Oop,Mysqli,我已经像这样定义了我的连接文件 文件名=connection.php <?php $host = "localhost"; $database = "projectp_peas"; $usr= "projectp_admin"; $pass = "9613341694"; $conn = mysqli_connect($host, $usr, $pass) or die (mysqli_error($conn)); ?> <?php class Product{ publi

我已经像这样定义了我的连接文件

文件名=
connection.php

<?php
$host = "localhost";
$database = "projectp_peas";
$usr= "projectp_admin";
$pass = "9613341694";
$conn = mysqli_connect($host, $usr, $pass) or die (mysqli_error($conn));
?>
<?php
class Product{

public $PRODUCT;
public $SHORT_DESC;
public $LONG_DESC;

public function showProduct($id){
include_once("conection.php");

mysqli_select_db($conn, $database);
$products = "SELECT * FROM PRODUCTS WHERE ID = '$id' ";
$rs_products = mysqli_query($conn, $products) or die (mysqli_error($conn));
$product = mysqli_fetch_assoc($rs_products);

echo "<h3 style=\"font-size:3em; color:#BBBBBB;\"> ";
echo $product['PRODUCT'] ."</h3>"; 
echo "<h5> ";
echo $product['SHORT_DESC'] ."</h5>"; 

echo $product['LONG_DESC']; 
}

}
?>
<?php
class User{
public function TopMenu(){
include_once("conection.php");
session_start();

if(isset($_SESSION['EMAIL'])){
$MAIL = $_SESSION['EMAIL'];

mysqli_select_db($conn, $database);
$username= "SELECT * FROM CLIENTS WHERE EMAIL = '$MAIL' ";
$USERNAME_RS = mysqli_query($conn, $username) or die(mysqli_error($conn));
$USR = mysqli_fetch_assoc($USERNAME_RS);

if(mysqli_num_rows($USERNAME_RS)>0){
echo $USR['C_NAME'] . " | <a href=\"../global/logout.php\">Log out </a> | <a href=\"UserPapers.php\"> Papers &nbsp; &nbsp;</a>" ;
}

else{
echo " <a href=\"../login.php\">Login</a> | <a href=\"../Register.php\">Register &nbsp; &nbsp;</a>" ;
}
}

else{
echo " <a href=\"../login.php\">Login</a> | <a href=\"../Register.php\">Register &nbsp; &nbsp;</a>" ;
}
}
}
?>
现在是我的
index.php
文件

<div class ="px_70">
<?php
 require_once('../script/product.php');
 $product = new Product;
 $product->showProduct(1);
?>
</div>
再次在
index.php
文件中:

<div class="tm">
<?php
include_once('../script/clients.php');
$top = new User;
$top->TopMenu();
?>
</div>
文件中的函数TopMenu()不应引起任何错误。因为这个函数可以正常工作,所以当我删除
产品
类时。
谁能告诉我,我在哪里出错?我对php OO和mysqli非常陌生。

您没有在函数中定义
$conn
。就这些

您可以将
$conn
定义为类的属性

class Product {
    private $connection;
    public function __construct($connection) {
        $this->connection = $connection;
    } 
    public function showProduct($id) {
        $database = ... ;
        mysqli_select_db($this->connection, $database);

我认为您应该将
include_once
更改为
include

class Product{

public $PRODUCT;
public $SHORT_DESC;
public $LONG_DESC;

public function showProduct($id){
include("conection.php");
在这里:

class User{
public function TopMenu(){
include("conection.php");

这将是一个好主意,删除密码!或者一开始就不要发布密码。
包括一次**
…不要将数据库创建/连接移动到完全不相关的类/方法中。如果需要为DB层创建抽象,那么创建一个DB类。这就像买一部手机。你不会买几部这样你就可以在家里的每个房间都有一部手机。你应该买一个,随身携带。这给了我一个致命的错误:
无法重新声明class Db…
我在谷歌上搜索了一下,发现
require\u once
就是解决方案。但是在我的例子中,
require\u once
给了我同样的错误。在你的例子中,你不能使用
require\u once
,或者
include\u once
你必须使用的开发方式,或者如果你想重新设计你的应用程序,我将设置另一个答案,如果你还需要解决方案,请告诉我是的,我需要解决方案。我读过很多论坛,尝试过各种方法,但仍然没有结果。那么,当我对
include
进行更改时,您会收到什么错误消息呢?您发布的
conconnect.php
中没有
classdb
,我提供的代码中也没有
classdb
。所以这条信息与我的回答无关。展示你的
conconnect.php
的完整比赛,或者只回答一个问题:我的或者其他人,但同时只回答一个问题。
class User{
public function TopMenu(){
include("conection.php");