错误:" mysqli_query()期望参数1为mysqli,在..."中给出null。

时间:2014-04-18 11:43:41

标签: php mysql mysqli

我的PHP代码中有些东西不起作用。函数mysqli_query()内的函数db_query()无法访问先前定义的变量link。为什么呢?

<?php
$link = mysqli_connect($hostname, $username, $password,$database);

function db_query($sql) {
    return mysqli_query($link ,$sql);
}

db_query('SELECT name FROM users LIMIT 1');

我的问题是我总是得到这个错误:

警告:mysqli_query()期望参数1为mysqli,在...中给出为null

3 个答案:

答案 0 :(得分:3)

$link = mysqli_connect("myhost","myuser","mypassw","mybd") or die("Error " . mysqli_error($link));
$query = "SELECT name FROM mytable");
$result = mysqli_query($link, $query);

我希望这有效

答案 1 :(得分:1)

对于将来看这个问题的人:

在PHP中,您无法访问函数之外的变量,如上所示。

转到variable scope了解详情。

这个问题有很多解决方案,但我更喜欢我在这里展示的一个(包括PDO)。如果在创建此实例的新对象时创建一个类并初始化连接,则以后查询sql将非常容易。

<?php
class Users {
    private $_conn;
    public function __construct() {
        //initialize the connection
        $this->_conn = new PDO('mysql:host=localhost;dbname=DBNAME;charset=utf8', USERNAME, PASSWORD);
    }

    public function __destruct() {
        //close the connection when the database connection is not needed anymore
        $this->_conn = null;  
    }

    public function do_something() {
        $this->_conn->query("SELECT name FROM users LIMIT 1");
    }
}

$users = new Users();    //initialize the new object Users
$users->do_something();

答案 2 :(得分:0)

这是一个范围问题。

必须为function db_query($db_conn,$sql) {