Я не очень знаком с php и сейчас делаю простую админку по видеоуроку, в самом начале возникли проблемы, код перечитывал уже десяток раз, все как на видео 1в1, но не получается сделать запрос к бд.
Код файла database.php
<?php
class Database {
private $host='localhost';
private $user="admin";
private $pass="12345";
private $db="db2";
function connectToDb() {
if($conn = mysqli_connect($this->host, $this->user,$this->pass)) {
if($db=mysqli_select_db($conn,$this->db)) {
}
}
}
function closeConnection() {
mysqli_close();
}
}
?>
Код файла select.php
<?php
class Select extends Database{
private $tabname;
function __construct($tablename) {
$this->connectToDb();
$this->tabname = $tablename;
}
function getRecordById($id) {
$query = "SELECT * FROM $this->tabname WHERE id = '$id'";
if($sql=mysqli_query($query)){
$data=mysqli_fetch_array();
}
return $data;
}
function getAllData() {
}
}
?>
Выводит сообщение об ошибке:
Warning: mysqli_query() expects at least 2 parameters, 1 given in E:\OpenServer\domains\admin\models\select.php on line 12
У автора видео все работает отлично, подскажите пожалуйста почему я получаю ошибку?
Процедурный стиль
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$result = mysqli_query($link, "SELECT Name FROM Table")
Объектно-ориентированный стиль который Вам нужен
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$result = $mysqli->query("SELECT Name FROM Table")
Документация
В вашем примере вы смешали Процедурный и Объектно-ориентированный стиль. Есть класс Database, так пусть у него в конструкторе или в функции connectToDb()
будет создано подключенние к БД:
class Database {
private $host = 'localhost';
private $user = "admin";
private $pass = "12345";
private $db = "db2";
protected $mysqliDB;
function connectToDb() {
$this->mysqliDB = new mysqli($this->host, $this->user, $this->pass, $this->db);
/* проверка соединения */
if ($this->mysqliDB->connect_errno) {
printf("Не удалось подключиться: %s\n", $mysqli->connect_error);
exit();
}
}
function closeConnection() {
$this->mysqliDB->close();
}
}
Класс Select и его функция getRecordById
function getRecordById($id) {
$query = "SELECT * FROM $this->tabname WHERE id = '$id'";
if ($result = $this->mysqliDB->query($query)) {
....
}
return $data;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
При выводе значений появляется две ошибки:
Возможно ли как нибудь отдать такой адрес пользователю с содержимым ?
Нужно из этой тбл выташить значения, одной строкой, но в ДВУХ колонках:
Какой вариант лучше для реализации: статическими методами или через объект?