Php mysql_query()希望参数1是字符串,即使用类和函数时给定的资源

Php mysql_query()希望参数1是字符串,即使用类和函数时给定的资源,php,mysql,function,class,Php,Mysql,Function,Class,我有三个文件,从技术上讲是两个,因为其中一个是init文件,只包含 我在index.php中的第一个文件,它使用SQL类: <?php define("WEB_URL", dirname(__FILE__ ) . "/"); include(WEB_URL . 'init.php'); $sql->openConnection('localhost', 'root', ''); $sql->selectDatabase("website"); $query = $sql-&

我有三个文件,从技术上讲是两个,因为其中一个是init文件,只包含

我在index.php中的第一个文件,它使用SQL类:

<?php

define("WEB_URL", dirname(__FILE__ ) . "/");
include(WEB_URL . 'init.php');

$sql->openConnection('localhost', 'root', '');
$sql->selectDatabase("website");
$query = $sql->query("SELECT * FROM users");
$result = $sql->fetch_array($query);
echo $result['user_name'];
$sql->closeConnection();

?>

到目前为止,SQL函数相当简单,但我不太确定我做错了什么。我已经把问题读了一遍,但似乎没有一个有效

<?php

class SQL {

    private $_connection;

    /*
     * openConnection
     *
     * @param String username, String password, String host
     * @return Boolean true
    */

    function openConnection($host, $username, $password)
    {

        $this->_connection = mysql_connect($host, $username, $password);

        if(!$this->_connection) {

            exit('Unable to connect to database');

        }

    }

    /*
     * closeConnection
     */

    function closeConnection()
    {

        mysql_close($this->_connection);

    }

    /*
     * selectDatabase
     * 
     * @param String database name
     * @return Boolean true
     */

    function selectDatabase($database_name)
    {

        mysql_selectdb($database_name, $this->_connection);

    }

    /*
     * query
     *
     * @param String query
     * @return Boolean results
     */

    public function query($query)
    {

        $q = mysql_query($this->_connection, $query) or die(mysql_error());
        return $q;

    }

    /*
     * query
     *
     * @param SQL results
     * @return Array array
     */

    function fetch_array($results)
    {

        return mysql_fetch_array($results);

    }

}

?>

而不是:

    $q = mysql_query($this->_connection, $query) or die(mysql_error());
这样做:

    $q = mysql_query( $query,$this->_connection) or die(mysql_error());

查看更多详细信息

mysql\u query()
首先是SQL字符串,然后是(可选)连接。您不应该包装mysql\u*()函数。它们已经过时了,不推荐使用。mysqli库已经有了一个面向对象的接口,所以你基本上是在泰坦尼克号上重新安排躺椅。哦,但是我更喜欢这种方式,尽管它违反了规则。这周围还有什么吗?安德鲁,我不太明白你的意思。@ExtremeEngineering-在你调用mysql\u查询时,交换参数,就像FaceOfJock的回答一样。如果您使用的是mysql_查询,那么不必提供数据库连接;如果不这样做,默认情况下,它将使用最近打开的连接。