#php #mysql #sql #pdo
#php #mysql #sql #pdo
Вопрос:
Я пытаюсь привязать $userId
значение, хранящееся $_SESSION
внутри insert select
оператора, но, похоже, это так неправильно.
class Cart {
public function addToCart($userId, $prodId) {
$sql = "INSERT INTO `cart` (prod_id, user_id, prod_title, prod_img,quantity, price)
SELECT product_id, //:user_id//, product_title, product_img, 1, product_price
FROM `products`
WHERE product_id = :product_id
";
$q = $this->_pdo->prepare($sql);
$q->execute([ 'user_id' => $userId , 'product_id' => $prodId]);
}
}
Ответ №1:
Когда вы используете именованные параметры, вы должны использовать это имя в массиве, который вы передаете функции execute (а также — не уверен, почему у вас есть //…// (в //:user_id//
).
Проверьте это:
$sql = "INSERT INTO `cart` (prod_id, user_id, prod_title, prod_img,quantity, price)
SELECT product_id, :user_id, product_title, product_img, 1, product_price
FROM `products`
WHERE product_id = :product_id
";
$q = $this->_pdo->prepare($sql);
$q->execute([ ':user_id' => $userId , ':product_id' => $prodId]);
Комментарии:
1. я просто пытаюсь сфокусировать его в своем описании на значении, которое необходимо привязать
2. вы проверили изменение
execute
в моем ответе?3. в любом случае спасибо за помощь
4. да, вы добавляете: для именованных параметров, но все время я выполняю без него и работает нормально
5. Спасибо за помощь снова