Привет! <br/> Я изучаю PHP и написал следующий код, но в нем возникает ошибка: **Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in (путь)** <br/> Вот мой код: <br/> <pre><code class="php">$product_Id = 32; $query = "(productId = 30) OR (productId = 32) OR (productId = 38)"; $sql = "SELECT * FROM `products` WHERE '$query'"; $query = $db->prepare($sql); $query->execute(array(":product_Id1" => $product_Id)); $products_data = $query->fetchAll(\PDO::FETCH_ASSOC);</code></pre> <br/> Я также приложил скриншот БД ниже. **Можете помочь исправить ошибку?**
Да, проблема здесь в том, что вы пытаетесь использовать параметр ":product_Id1" в вашем запросе, но не связали его с переменной $product_Id в методе execute. Для исправления этой ошибки вам нужно изменить ваш код следующим образом: ```php $product_Id = 32; $query = "productId = :product_Id"; $sql = "SELECT * FROM `products` WHERE $query"; $query = $db->prepare($sql); $query->execute(array(":product_Id" => $product_Id)); $products_data = $query->fetchAll(\PDO::FETCH_ASSOC); ``` Таким образом, теперь вы связали параметр ":product_Id" с переменной $product_Id при выполнении запроса. После выполнения этих изменений ваш запрос должен выполниться корректно без ошибок SQLSTATE[HY093].
Как вы пишете, в query у вас три id, а передаёте в execute вы только один, о чём вам прямым текстом сообщают.