试图为mysqli连接创建php类并用于查询。

时间:2014-01-19 22:02:04

标签: php mysql sql class mysqli

所以我正在尝试创建一个可用于连接mysql数据库的类。在尝试使用我的课程之前,不应该先进,这一切都很有趣和游戏。这是我的代码:

班级:

<?php

class createCon  {
    var $host = 'localhost';
    var $user = 'root';
    var $pass = '';
    var $db = 'example';
    var $myconn;

    function connect() {
        $con = mysqli_connect($this->host, $this->user, $this->pass, $this->db);
        if (!$con) {
            die('Could not connect to database!');
        } else {
            $this->myconn = $con;
            echo 'Connection established!';}
        return $this->myconn;
    }

    function close() {
        mysqli_close($myconn);
        echo 'Connection closed!';
    }

}

?>

这是我尝试查询数据库的地方:

<?php

include 'connect.php';

$connection = new createCon();
$connection->connect();

$query = 'SELECT * FROM  `nickname`';
$result = mysqli_query($connection, $query);

if($numrows = mysqli_num_rows($result)) {
        echo $numrows;
    while ($row = mysqli_fetch_assoc($result)) {
        $dbusername = $row['nick'];
        $dbpassword = $row['pass'];
        echo $dbusername;
        echo $dbpassword;
    }}
?>

当我尝试进行查询时出现以下错误:

( ! ) Warning: mysqli_query() expects parameter 1 to be mysqli, object given in C:\wamp\www\uppgift 1 kompletering\test.php on line 13

( ! ) Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in C:\wamp\www\uppgift 1 kompletering\test.php on line 15

我想我有点理解为什么我会得到错误,但是我不知道如何修复错误。尝试了一百万件事,没有任何作品。我对OOP和php都很陌生,并会非常喜欢一些建议!

3 个答案:

答案 0 :(得分:10)

您希望传递$connection->myconn而不是$connection。如:

$result = mysqli_query($connection->myconn, $query);

就目前而言,你传递的是一个类的实例,而不是一个mysqli,这是错误消息所抱怨的。

答案 1 :(得分:5)

在数据库连接类中返回连接。在php类中,你必须捕获该连接变量

$connection = new createCon();
$conn = connection->connect();

您可以将$conn变量用作mysqli_query()参数,例如

$result = mysqli_query($conn, $query);

这适合我。

答案 2 :(得分:0)

我个人使用 Wolf Software 中的mysqli_ext进行了一些小修改。他们的网站不再可供下载,但我已下载了我的网站副本供您下载。它是根据GPL许可的,因此您可以修补它。它可能会取代您的课程,或者它可能会为您提供使您的课程正常工作所需的信息!

连接:

$sDB = new mysqli_ext($dbHost, $dbUser, $dbPass, $dbBase);
if ($sDB->connection_failed) {
    /* Error */
}

选择查询:

$sDB->select("SELECT * FROM `albums` WHERE `listedtype` = 'PUBLIC' ORDER BY `createdon` LIMIT ?, ?", "ii", $aStart, $aAlbums);

其他查询:

$sDB->execute_query("UPDATE `photos` SET `views` = `views` + 1 WHERE `picid` = ?", "s", $sPhoto);

从:http://www.tip2tail.co.uk/files/mysqli.class.zip

下载

希望有所帮助!