微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用PHP OOP概念连接到MySQL数据库

我正在编写一个类和一些函数来连接数据库并从表中检索信息.我浏览过以前有类似标题的帖子,但大多数都是使用mysql函数编写的,我使用的是MysqLi函数.

我希望有人可以通过这个简单的脚本让我知道我在哪里弄错了.

这是我的class.connect.PHP

<?PHP

    class MysqL{
        var $host;
        var $username;
        var $password;
        var $database;
        public $dbc;

        public function connect($set_host, $set_username, $set_password, $set_database)
        {
            $this->host = $set_host;
            $this->username = $set_username;
            $this->password = $set_password;
            $this->database = $set_database;

            $this->dbc = MysqLi_connect($this->host, $this->username, $this->password,           $this->database) or die('Error connecting to DB');        
        }

        public function query($sql)
        {
            return MysqLi_query($this->dbc, $sql) or die('Error querying the Database');
        }

        public function fetch($sql)
        {        
            $array = MysqLi_fetch_array($this->query($sql));          
            return $array;
        }

        public function close()
        {
            return MysqLi_close($this->dbc);
        }
    }
    ?>

这是我的index.PHP

<?PHP
        require_once ("class.connect.PHP");

        $connection = new MysqL();

        $connection->connect('localhost', 'myDB', 'joker', 'names_list');
        $myquery = "SELECT * FROM list";
        $query = $connection->query($myquery);        

        while($array = $connection->fetch($query))
        {
            echo $array['first_name'] . '<br />';
            echo $array['last_name'] . '<br />';                
        }

        $connection->close();
?>

我收到错误错误查询数据库.

解决方法:

问题是:

    public function fetch($sql)
    {        
        $array = MysqLi_fetch_array($this->query($sql));          
        return $array;
    }

或这个:

 while($array = $connection->fetch($query))

因为您正在使用查询的结果再次进行查询.基本上,你在做:

$r = MysqLi_query($this->dbc, $sql);
$array = MysqLi_fetch_array(MysqLi_query($this->dbc, $r));

并且您收到错误,因为$r不是查询字符串.当它被转换为字符串时,它是一个“1”(来自你的其他评论).

尝试将函数更改为(更改变量名称,以便您可以看到差异):

    public function fetch($result)
    {        
        return MysqLi_fetch_array($result);
    }

或者直接调用函数.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐