Php mysqli_query()需要参数1,我找不到哪里做错了

Php mysqli_query()需要参数1,我找不到哪里做错了,php,mysqli,Php,Mysqli,我找不到我做错了什么,我切换了$connection和$sql,仍然不工作,mysqli_query()希望参数1是mysqli,在中给出null 有人能帮我看一下吗?声明一个将存储连接的私有变量。在课堂上使用它。不需要通过函数传递它。试试- class AirData{ function __construct() { $this->connect(); echo "start"; } function conn

我找不到我做错了什么,我切换了$connection和$sql,仍然不工作,mysqli_query()希望参数1是mysqli,在中给出null


有人能帮我看一下吗?

声明一个将存储连接的私有变量。在课堂上使用它。不需要通过函数传递它。试试-

class AirData{
    function __construct() {
            $this->connect();
            echo "start";
    }


    function connect(){
        /*connect to data base change to PDO, for securely*/
        $connection = mysqli_connect('localhost', DB_USER, DB_PASS);

            if (!$connection) {
                die('Could not connect: ' . mysqli_error());
            }
            mysqli_set_charset($connection, 'utf8');
            $db_selected = mysqli_select_db($connection, DB_NAME);

            if (!$db_selected) {
                die('Can\'t use ' . DB_NAME . ': ' . mysqli_error());
            }
    }

    function insert($connection, $table, $fields, $values){
        $fields = implode(", ", $fields);
        $values = implode("','", $values);
        $sql="INSERT INTO $table(ID, $fields) VALUES ('', '$values')";

       /*error here something is wrong at here*/
        if(!mysqli_query($connection,$sql)){
            die('could not connect');
        } else {
            return TRUE;
        }
    }
}

$ALIST = new AirData;

请检查您的插入查询。您的查询工作不正常,请检查它。 你可以像这样尝试查询

class AirData{

    private $connection;
    function __construct() {
            $this->connect();
            echo "start";
    }


    function connect(){
        /*connect to data base change to PDO, for securely*/
        $this->connection = mysqli_connect('localhost', DB_USER, DB_PASS);

            if (!$this->connection) {
                die('Could not connect: ' . mysqli_error());
            }
            mysqli_set_charset($this->connection, 'utf8');
            $db_selected = mysqli_select_db($this->connection, DB_NAME);

            if (!$db_selected) {
                die('Can\'t use ' . DB_NAME . ': ' . mysqli_error());
            }
    }

    function insert($table, $fields, $values){
        $fields = implode(", ", $fields);
        $values = implode("','", $values);
        $sql="INSERT INTO $table(ID, $fields) VALUES ('', '$values')";

       /*error here something is wrong at here*/
        if(!mysqli_query($this->connection,$sql)){
            die('could not connect');
        } else {
            return TRUE;
        }
    }
}

如何将$connection传递给insert()方法?我建议您将
$connection
设置为类的私有属性,然后将其用作参数,只需使用
$this->connection
。问题是在
connect()
函数中,您将连接id存储到变量
$connection
,它是此函数中的局部变量,在函数返回时将被销毁。您需要将其存储在该功能之外-请参阅BOSE中士的答案。感谢它,感谢您对我的帮助。
 $sql="INSERT INTO $table(ID, '$fields') VALUES ('', '$values')";