#php #mysqli
#php #mysqli
Вопрос:
Я пытаюсь изучить объектно-ориентированное программирование. Проблема, с которой я сталкиваюсь, заключается в том, как добавить ссылку в mysqli_query() внутри класса.
В процедурном стиле я просто создаю переменную $ с деталями подключения, а затем использую ее внутри mysqli_query ($variable, $ sql) и т. Д.
В моем классе у меня есть функция connect(), которая подключается к базе данных и возвращает true, но как я могу использовать ее внутри моего mysqli_query(), пожалуйста? пожалуйста, посмотрите код здесь:
<?php
class DB {
protected $db_name = 'OOP_forum';
protected $db_user = 'Marcel';
protected $db_pass = *****;
protected $db_host = 'localhost';
public function connect() {
$connection = mysqli_connect($this->db_host, $this->db_user, $this->db_pass);
mysqli_select_db($connection, $this->db_name);
return true;
}
public function processRowSet($rowSet, $singleRow = false) {
$resultArray = array();
while($row = mysqli_fetch_assoc($rowSet)) {
arraypush($resultArray, $row);
}
if($singleRow==true) {
return $resultArray[0];
}else {
return $resultArray; }
}
public function select ($table, $where, $column = '*') {
$sql = "SELECT $column FROM $table WHERE $where";
$result = mysqli_query($sql);
if(mysqli_num_row($result) == 1 ){
return $this->processRowSet($result, true);
} else
{ return $this->processsRowSet($result);
}
}
public function update ($data, $table, $where) {
foreach ($data as $column->$value) {
$sql = "UPDATE $table SET $column = $value WHERE $where";
mysqli_query($sql) or die(mysqli_error());
}
return true;
}
public function delete ($table, $column, $where) {
$sql = "DELETE FROM $table WHERE $column = $where";
if (query($sql)=== TRUE) {
echo "Record Deleted sucessfully";
}else {
echo "Error deleting record: " . $connection->error;
}
}
public function insert($data, $table) {
$columns = "";
$values = "";
foreach ($data as $column->$value) {
$columns .= ($columns == "") ? "": ", " ;
$columns .= $column;
$values .= ($values == "") ? "" : ", ";
$values .= $value;
}
$sql = "insert into $table ($columns) values ($values)";
mysqli_query($sql) or die(mysqli_error());
return mysqli_insert_id();
}
}
?>
Комментарии:
1. Почему вы используете процедурный mysqli, если вы изучаете синтаксис ООП?
2. вы должны передать свой объект подключения в качестве первого параметра здесь:-
$result = mysqli_query($sql);
3. Спасибо за комментарии. Это то, что я пытаюсь сделать, чтобы передать соединение в качестве первого параметра mysqli_query(something, $sql), но не уверен, как добиться этого с помощью моей функции connect, которая возвращает true. изучу подробнее 🙂
Ответ №1:
Прежде чем пытаться изучать ООП-программирование, вы должны изучить базовый синтаксис ООП.
Для этого забудьте на некоторое время о создании собственных классов и научитесь использовать уже созданные. Итак, прежде всего, узнайте, как использовать mysqli. Который уже является классом.
А еще лучше, вместо этого изучите PDO, поскольку, в отличие от mysqli, это уже готовый к использованию класс доступа к базе данных, с ним вам не нужны такие функции, как processRowSet, например.