Улучшение функции $karl "addToCart" в PHP с помощью подготовленных операторов ⇐ Php
Улучшение функции $karl "addToCart" в PHP с помощью подготовленных операторов
Привет, сообщество StackOverflow!
В настоящее время я создаю приложение для онлайн-покупок и столкнулся с проблемой реализации. Я разработал метод под названием addToCart, который позволяет пользователю добавлять товары в корзину. Он использует подготовленные операторы PHP для взаимодействия с базой данных MySQL.
Вот что у меня есть:
общественная функция addToCart($userId, $productId, $quantity){ $status = "Оскорбление"; $stmt = $this->db->getConnection()->prepare("SELECT * FROM cars WHERE user_id = ? AND status = ?"); $stmt->bind_param("is", $userId, $status); $stmt->выполнить(); $result = $stmt->get_result(); $row = $result->fetch_assoc(); если ($строка) { // Wenn der Benutzer bereits einen aktiven Warenkorb Hat, verwenden der CartID $cartId = $row['cart_id']; // Überprüfen, ob das Produkt bereits im Warenkorb ist $stmt = $this->db->getConnection()->prepare("ВЫБЕРИТЕ количество ИЗ корзиныпродуктов ГДЕ cart_id = ? AND product_id =?"); $stmt->bind_param("ii", $cartId, $productId); $stmt->выполнить(); $result = $stmt->get_result(); $row = $result->fetch_assoc(); если ($строка) { // Wenn das Produkt bereits im Warenkorb ist, aktualisieren der Menge $newQuantity = $row['quantity'] + $quantity; $stmt = $this->db->getConnection()->prepare("ОБНОВЛЕНИЕ набора товаров в корзину = ? ГДЕ cart_id = ? AND product_id =?"); $stmt->bind_param("iii", $newQuantity, $cartId, $productId); вернуть $stmt->execute(); } еще { // Wenn das Produkt nicht im Warenkorb ist, füge hinzu $stmt = $this->db->getConnection()->prepare("ВСТАВИТЬ В корзинупродукты (cart_id, product_id, количество) ЗНАЧЕНИЯ (?, ?, ?)"); $stmt->bind_param("iii", $cartId, $productId, $quantity); вернуть $stmt->execute(); } } } } Зарегистрироваться Зарегистрироваться Vorname Новое имя Электронная почта Пароль Лучший пароль
Bereits Registriert ? Более высокий уровень Войти Войти Электронная почта:
Пароль:
Ны здесь? Высшая регистрация Похоже, что эта функция работает в большинстве сценариев, но мне интересно:
[*]Есть ли более эффективный и понятный способ структурировать эту логику, чтобы минимизировать количество вызовов базы данных? [*]Есть ли потенциальные ловушки или крайние случаи, которые я мог бы упустить из виду при таком подходе?
Буду очень признателен за любые советы и подсказки по оптимизации. Заранее спасибо!
Я опробовал текущую реализацию функции addToCart и ожидал, что она будет эффективно обрабатывать добавление товаров в корзину пользователя, минимизируя при этом обращения к базе данных. Я хотел, чтобы функция сначала проверяла, существует ли уже корзина для пользователя, а затем, в зависимости от того, находится ли продукт уже в корзине, либо обновляла количество, либо добавляла новую запись для продукта. Я не уверен, что это самый оптимальный способ добиться этого, особенно в отношении производительности базы данных. Вот почему я жду отзывов о возможных улучшениях и подводных камнях.
Привет, сообщество StackOverflow!
В настоящее время я создаю приложение для онлайн-покупок и столкнулся с проблемой реализации. Я разработал метод под названием addToCart, который позволяет пользователю добавлять товары в корзину. Он использует подготовленные операторы PHP для взаимодействия с базой данных MySQL.
Вот что у меня есть:
общественная функция addToCart($userId, $productId, $quantity){ $status = "Оскорбление"; $stmt = $this->db->getConnection()->prepare("SELECT * FROM cars WHERE user_id = ? AND status = ?"); $stmt->bind_param("is", $userId, $status); $stmt->выполнить(); $result = $stmt->get_result(); $row = $result->fetch_assoc(); если ($строка) { // Wenn der Benutzer bereits einen aktiven Warenkorb Hat, verwenden der CartID $cartId = $row['cart_id']; // Überprüfen, ob das Produkt bereits im Warenkorb ist $stmt = $this->db->getConnection()->prepare("ВЫБЕРИТЕ количество ИЗ корзиныпродуктов ГДЕ cart_id = ? AND product_id =?"); $stmt->bind_param("ii", $cartId, $productId); $stmt->выполнить(); $result = $stmt->get_result(); $row = $result->fetch_assoc(); если ($строка) { // Wenn das Produkt bereits im Warenkorb ist, aktualisieren der Menge $newQuantity = $row['quantity'] + $quantity; $stmt = $this->db->getConnection()->prepare("ОБНОВЛЕНИЕ набора товаров в корзину = ? ГДЕ cart_id = ? AND product_id =?"); $stmt->bind_param("iii", $newQuantity, $cartId, $productId); вернуть $stmt->execute(); } еще { // Wenn das Produkt nicht im Warenkorb ist, füge hinzu $stmt = $this->db->getConnection()->prepare("ВСТАВИТЬ В корзинупродукты (cart_id, product_id, количество) ЗНАЧЕНИЯ (?, ?, ?)"); $stmt->bind_param("iii", $cartId, $productId, $quantity); вернуть $stmt->execute(); } } } } Зарегистрироваться Зарегистрироваться Vorname Новое имя Электронная почта Пароль Лучший пароль
Bereits Registriert ? Более высокий уровень Войти Войти Электронная почта:
Пароль:
Ны здесь? Высшая регистрация Похоже, что эта функция работает в большинстве сценариев, но мне интересно:
[*]Есть ли более эффективный и понятный способ структурировать эту логику, чтобы минимизировать количество вызовов базы данных? [*]Есть ли потенциальные ловушки или крайние случаи, которые я мог бы упустить из виду при таком подходе?
Буду очень признателен за любые советы и подсказки по оптимизации. Заранее спасибо!
Я опробовал текущую реализацию функции addToCart и ожидал, что она будет эффективно обрабатывать добавление товаров в корзину пользователя, минимизируя при этом обращения к базе данных. Я хотел, чтобы функция сначала проверяла, существует ли уже корзина для пользователя, а затем, в зависимости от того, находится ли продукт уже в корзине, либо обновляла количество, либо добавляла новую запись для продукта. Я не уверен, что это самый оптимальный способ добиться этого, особенно в отношении производительности базы данных. Вот почему я жду отзывов о возможных улучшениях и подводных камнях.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Проблема с обновлением данных с использованием подготовленных операторов PHP
Anonymous » » в форуме Php - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-