Я пытаюсь создать базовую функцию оценки с помощью PHP, SQL, PDO, которая добавляет значение рейтинга, которое пользователь дает поле «recipe_rating», а затем добавляет 1 к полю « recipe_ratingcounter».PHP PDO BindValue не работает должным образом
Однако с моим кодом ниже что-то не так! Две строки $query1->bindValue(2, $recipename);
и $query2->bindValue(1, $recipename);
работают некорректно, так как они фактически не привязаны ни к каким вопросительным знакам в инструкции SQL. Я считаю, что SQL корректен, когда я заменяю переменные $recipename
в строках выше строкой, такой как «Tuna Pasta», вся функция работает отлично. Я также использовал var_dump для этой переменной, чтобы убедиться, что она действительно содержит строку.
if (isset($_GET['name'])) {
$name = $_GET['name'];
$recipedetails = $recipe->get_recipe($name);
if (isset($_POST["Submit"])) {
$selectedrating = $_POST["rating"];
$recipename = $recipedetails['recipe_name'];
$recipename = "'".$recipename."'";
global $con;
$query1 = $con->prepare("UPDATE emptyfridge SET recipe_rating = recipe_rating + ? WHERE recipe_name = ?");
$query1->bindValue(1, $selectedrating);
**$query1->bindValue(2, $recipename);**
$query1->execute();
$query2 = $con->prepare("UPDATE emptyfridge SET recipe_ratingcounter = recipe_ratingcounter + 1 WHERE recipe_name = ?");
**$query2->bindValue(1, $recipename);**
$query2->execute();
}
Предполагается ли, что ваши названия рецептов содержат кавычки ('')? $ recipename в конечном итоге будет «имя», а не «имя». –