Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: mode must be an integer in C:\OSPanel\domains\WorkLeader\app\models\Admin.php on line 55
( ! ) PDOException: SQLSTATE[HY000]: General error: mode must be an integer in C:\OSPanel\domains\WorkLeader\app\models\Admin.php on line 55
Выдаёт вот такую ошибку. Пытаюсь делать сайт с использованием ООП и MVC, всё было ок, но появился затык ввиде PDO. При том что в отдельном файле index.php где таким же способом всё сделано, запрос срабатывает.
Вот моя модель Model.php
<?php
namespace app\core;
use PDO;
class Model {
public $db;
public function __construct() {
$option = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
$config = require 'app/config/db.php';
extract($config);
try {
$this->db = new PDO("mysql:host=$host;dbname=$name;charset=$charset", $user, $password, $option);
} catch (PDOException $e) {
die("Ошибка");
}
}
public function query($sql, $params = []) {
$stmt = $this->db->prepare($sql);
if (!empty($params)) {
foreach ($params as $key => $val) {
$stmt->bindValue(':'.$key, $val);
}
}
$stmt->execute();
// return $stmt;
}
}
Файл Admin.php который наследует модель Model.php
<?php
namespace app\models;
use app\core\Model;
class Admin extends Model {
public function jobAdd($post) {
$params = [
'id' => '',
'name' => $post["name"],
'url' => $post["url"],
'country' => $post["country"],
'sex' => $post["sex"],
'salary' => $post["salary"],
];
$sql = "INSERT INTO `jobs1` (`id`, `name`, `url`, `country`, `sex`, `salary`) VALUES (:id, :name, :url, :country, :sex, :salary)";
$this->db->query($sql,$params);
}
}
И контроллер, который вызывает модель AdminController.php
<?php
namespace app\controllers;
use app\core\Controller;
class AdminController extends Controller {
public function jobsAddAction() {
if (!empty($_POST)) {
if (!$this->model->jobsValidate($_POST,'add')) {
$this->view->message('error', $this->model->error, 'Ошибка!');
}
$this->model->jobAdd($_POST);
$this->view->message('success','Вакансия добавлена','Успешно!');
}
$this->view->render();
}
}