Я пытался использовать функцию, не объявляя ее второй параметр, но, похоже, она не работает. Что я сделал не так?
Я также попытался объявить функцию без второго параметра $db->DoQuery($query, null);
с тем же результатом.
<?php
include($directory . "classes/database.php");
$db = new database;
$db->initiate();
include("../includes/core.php");
$query = "SELECT * FROM services";
$db->DoQuery($query, null);
$num = $db->fetchAll();
print_r($num);
?>
Ниже приведен класс базы данных.
<?php
class database {
public function initiate() {
$user = "user";
$password = "pass";
$hostname = "localhost";
$dbn = "dbt";
try
{
$this->database = new PDO("mysql:host={$hostname};dbname={$dbn}", $user, $password);
}
catch(PDOException $e)
{
$error = "I'm unable to connect to the database server.";
die("Failed to connect to database: " . $e->getMessage());
}
$this->database->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
public function DoQuery($query, $query_params) {
try
{
$this->result = $this->database->prepare($query);
if ($query_params != null)
{
$this->result->execute($query_params);
}
else
{
$this->result->execute();
}
}
catch(PDOException $e)
{
die();
}
}
// A function to fetch a single row from the query
public function fetch() {
return $this->result->fetch();
}
// A function to fetch multiple rows from the query
public function fetchAll() {
return $this->result->fetchAll();
}
// A function to fetch number of rows from the query
public function RowCount() {
return $this->result->RowCount();
}
}
?>
Изменение в классе базы данных
public function DoQuery($query, $query_params = null) {
Вызов без второго параметра
$db->DoQuery($query);
Вызов со вторым параметром
$db->DoQuery($query, null);
Установите второй параметр в array()
public function DoQuery($query, $query_params = array()) {
try
{
$this->result = $this->database->prepare($query);
$this->result->execute($query_params);
}
catch(PDOException $e)
{
die();
}
}
Тогда, если вы не хотите передавать какие-либо параметры запроса, просто пропустите второй параметр.
$db->DoQuery($query);