连接链接不是资源?为什么?

时间:2014-07-23 15:32:09

标签: php

我正在使用一个类创建mysql连接并将链接存储在私有变量

但当我在mysql_real_escape_string()中使用该链接变量或尝试使用

is_resource()它说链接不是资源....这是我的库代码来自library.php ...

class db_system
{
    private $link;
    private $result;

    /*
        Constructor connects to database and store in link
    */
public function __construct()
{
    $lines = file('../../secret/topsecret');
    $this->link = mysqli_connect(trim($lines[0]), trim($lines[1]), trim($lines[2]), trim($lines[3])) or die("Could not connect to " . mysqli_error($this->link));
    if(is_resource($this->link))
        echo "true";
    else
        echo "false";  // it always prints false;
}

/*
    this method process the query and returns the result od the query
*/
public function sqlquery($query)
{
    $this->result = mysqli_query($this->link, $query) or die('query failed ' . mysqli_error($this->link));
}

/*
    this method returns the rows in an array form
*/
public function get_data()
{
    return mysqli_fetch_array($this->result);
}

/*
    destructor closes sql connection if link is active
*/
public function __destruct()
{
    if($this->link)
    {
        mysqli_close($this->link);
    }
}

public function getlink()
{
    return $this->link;
}
}

以下是view.php的代码

include 'library.php';

    $view = new db_system();  // connection object made

$per = "%";

$qry = sprintf('SELECT * FROM inventory WHERE description LIKE     "%s%s%s"',$per,mysql_real_escape_string($find,$view->getlink()),$per);

// $ find是一个要搜索的值,它来自$ _GET [' find']并存储在$ find中并且不为null

之后它说2参数不是mysql_real_escape_string()中的资源......

那么如何将$ link作为资源变量,以便我可以使用mysql_real_escape_string()

1 个答案:

答案 0 :(得分:1)

因为mysqli没有使用资源,所以它使用对象:

mysqli mysqli_connect ([ string $host = ini_get("mysqli.default_host") [, string $username = ini_get("mysqli.default_user") [, string $passwd = ini_get("mysqli.default_pw") [, string $dbname = "" [, int $port = ini_get("mysqli.default_port") [, string $socket = ini_get("mysqli.default_socket") ]]]]]] )

这表示该函数返回mysqli类型的对象(该行的第一个单词)。

请参阅http://php.net/manual/en/mysqli.construct.phphttp://php.net/manual/en/mysqli.quickstart.dual-interface.php。另请参阅http://php.net/manual/en/mysqli.quickstart.prepared-statements.php了解如何正确转义/参数化查询,而不是使用不相关的mysql_real_escape_string