Я кодировал базу данных User, которая вызывает статический метод find_all, который вызывает метод запроса, который, в свою очередь, возвращает все значение базы данных, но я нахожусь в затруднении при этом каждый раз, когда я пытаюсь назвать это, он дает мне эту ошибку как mysqli_query () ожидает, что параметр 1 является mysqli, строка, указанная в C: \ xampp \ htdocs \ photogallery \ includes \ database.php в строке 20. Что я делаю? Вот фрагмент кода User.php
require_once("database.php"); class User{ public static function find_all(){ global $database; $sql= "select * from users"; $result_set = $database->query($sql); return $result_set; } public static function find_by_id($id=0){ global $database; $result_set = $database->query("SELECT FROM users where id={$id}"); $found = $database->fetch_array($result_set); return $found; } }
database.php
public function query($sql){ echo $sql; $this->last_query = $sql; echo $result = mysqli_query($sql,$this->connection); $this->confirm_query($result); return $result; } public function confirm_query($result){ if(!$result){ die("Database query failed:".mysqli_error()); } }
и index.php, где код вызывается следующим образом:
<?php require_once("../includes/database.php"); require_once("../includes/user.php"); $q = User::find_all(); ?>
в<?php require_once("../includes/database.php"); require_once("../includes/user.php"); $q = User::find_all(); ?>
в<?php require_once("../includes/database.php"); require_once("../includes/user.php"); $q = User::find_all(); ?>
Каждый раз, когда ошибка возникает, поскольку mysqli_query ожидает, что параметр 1 является mysqli, строка, указанная в C: \ xampp \ htdocs \ photogallery \ включает \ database.php в строке 20. Помогите мне пожалуйста?
При использовании mysqli
в процедурном стиле первым аргументом mysqli_query
должен быть объект соединения
Из официальной документации :
mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
Таким образом, вам нужно изменить порядок аргументов, $this->connection
идет первым, а $sql
вторым:
$result = mysqli_query($this->connection, $sql);
Просто прочитайте документы:
смешанный
mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
Вы должны изменить свои аргументы на
mysqli_query($this->connection, $sql)