Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP类之间传递变量需要帮助_Php_Mysqli - Fatal编程技术网

在PHP类之间传递变量需要帮助

在PHP类之间传递变量需要帮助,php,mysqli,Php,Mysqli,我有一个“Database.php”,它将处理数据库连接,并将mysql连接移交给调用数据库类的类 Database.php <?php class Database { private $domain = "localhost"; private $usr = "root"; private $pwd = "password"; private $dbname = "testdb"; private $db; function __c

我有一个“Database.php”,它将处理数据库连接,并将mysql连接移交给调用数据库类的类

Database.php

<?php

class Database {

    private $domain = "localhost";
    private $usr = "root";
    private $pwd = "password";
    private $dbname = "testdb";
    private $db;

    function __contruct() {
    }

    function connect() {
        $this->db = mysqli_connect($domain, $usr, $pwd, $dbname);
        if ($db->connect_errno > 0) {
                die("DbConn Fail: \n ".$mysqli->connect_error);
        } else {
            return $this->db;
        }
    }
}

?>

我有以下测试类试图调用数据库类来检索连接,然后在其SQl语句中使用该连接

test.php

<?php
include('Database.php');
$db = new Database();
$conn = $db->connect();
$sql = "SELECT custid FROM `testdb`.`customer`";
$res = mysqli_query($conn, $sql);
$nrows = mysqli_num_rows($res);
echo "Num Rows Found: " . $nrows . "<br>";
if($res) {
echo "fetching...<br>";
    while ($row = mysqli_fetch_assoc($res)){
        echo "Found Customer ID: " . $row['custid'] . "<br>";
    }
}

?>

我面临的问题是在“Database.php”类中。每当通过“connect()”函数建立成功的连接时,数据库类都会返回一个有效的mysql连接到调用“Database”类的类,但从下面的演示来看,该连接无法正常工作


我可以知道如何解决上述问题吗?

您应该包含链接,而不是类初始化:

$res = mysqli_query($conn, $sql)
此外,您的连接错误:

$this->db = mysqli_connect($this->domain, $this->usr, $this->pwd, $this->dbname);
此外:


命名您的
mysqli\u connect
结果变量
$db
而不是
$connectionHandle
会带来麻烦,正如您所看到的,您只需将
$db
对象传递给
mysqli\u query()
而不是连接句柄。正确的代码应为:

$res = mysqli_query($conn, $sql);

不要“保存”变量名。总是痛。

Sry,$conn是个错误。经过编辑,效果不太好。谢谢。这是一个简单的$this->domain,$this->usr。。。这说明它不起作用:D.考虑使用PDO和MyQuLi…首先了解OOP。
$res = mysqli_query($conn, $sql);