Вставка Sql в оператор Select PDO

#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. Спасибо за помощь снова