делаю вывод товаров по категориям,но возникает ошибка
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\OpenServer\OSPanel\domains\diplom\Models\ProductModel.php on line 21 Буду рада,если поможете решить проблему новичку( если и сам вывод товаров не рабочий,то буду рада критике и советам) :) ProductController.php
class ProductModel extends Model
{
public function products($idcat){
$stmt=$this->db->prepare("SELECT id, name,price,description FROM products WHERE category_id = ?");
$stmt->bindParam('i',$idcat);
$stmt ->execute();
$result = array();
$i=1;
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$result[$i]['id']=$row['id'];
$result[$i]['name']=$row['name'];
$result[$i]['description']=$row['descriprion'];
$result[$i]['price']=$row['price'];
$i++;
}
return $result;
}
}
ProductController.php
require_once (MODEL_PATH ."/CategoryModel.php");
class ProductController extends Controller
{
private $pageTpl = "/Views/templates/product.tpl.php";
public function __construct()
{
$this->model=new ProductModel();
$this->view= new View();
}
public function index(){
$this->pageData['title']="О нас";
$category=CategoryModel::Get_Category();
$this->pageData['category'] = $category;
$idcat=$category['id_category'] ;
$this->pageData['products']=$this->model->products($idcat);
$this->view->render($this->pageTpl,$this->pageData);
}
}
и на всякий CategoryModel.php
class CategoryModel extends Model {
public static function Get_Category (){
$conn=DB::connToDB();
$sql="SELECT id, name FROM categories";
$result = array();
$stmt= $conn->prepare($sql);
$stmt ->execute();
$i=1;
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$result[$i]['id']=$row['id'];
$result[$i]['name']=$row['name'];
$i++;
}
return $result;
}
}
Вы немного недочитали PDO, вы в запросе использовали плейсхолдер ?
, а потом пытались биндить name parameter
i
которого у вас нет, если хотите через name parameter
запрос должен быть такой:
$stmt=$this->db->prepare("SELECT id, name,price,description FROM products WHERE category_id = :i");
$stmt->bindParam('i',$idcat);
$stmt ->execute();
Если же через плейсхолдер, то такой:
$stmt=$this->db->prepare("SELECT id, name,price,description FROM products WHERE category_id = ?");
$stmt ->execute(array($idcat));
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Разбираюсь с шифрованием (end-2-end)Не могу понять где хранить ключи или ключ
Для плагина нужно сделать функцию очистки бдСделал удаление постов:
Подскажите пожалуйста реализовать функционал На сайте есть форма, после отправки формы, скрипт должен: