php - 当来自 $_GET 的值时,PDO bindValue 不起作用

标签 php mysql pdo

我正在尝试使用 PHP、SQL、PDO 创建一个基本评级函数,它将用户给出的评级值添加到字段“recipe_rating”,然后将 1 添加到字段“recipe_ratingcounter”。

但是,我下面的代码有些不对劲!这两行 $query1->bindValue(2, $recipename);和 $query2->bindValue(1, $recipename);不能正常工作,因为它们实际上没有将任何内容绑定(bind)到 SQL 语句中相应的占位符。 SQL 语法是正确的,因为当上面的 $recipename 变量被替换为单个字符串(如“tuna pasta”或“spag bol”而不是 $_GET['name'])时,整个函数可以完美运行。

Var_dump 在以下情况下将 $recipename 显示为字符串:

  • $recipename = $_GET['name'];

  • $recipename = "金枪鱼意大利面";

...因此我不知道下一步该怎么做,因为我已经尝试了我能想到的一切!

这有效-

if (isset($_POST["Submit"])) {
$selectedrating = $_POST["rating"];
$recipename = "tuna pasta";

global $con;
$query1 = $con->prepare("UPDATE emptyfridge SET recipe_rating = recipe_rating + :recipe_rating WHERE recipe_name = :recipe_name1");
$query1->bindValue(':recipe_rating', $selectedrating);
$query1->bindValue(':recipe_name1', $recipename);
$query1->execute();

$query2 = $con->prepare("UPDATE emptyfridge SET recipe_ratingcounter = recipe_ratingcounter + 1 WHERE recipe_name = :recipe_name2");
$query2->bindValue(':recipe_name2', $recipename);
$query2->execute();
}

但这行不通-

if (isset($_POST["Submit"])) {
$selectedrating = $_POST["rating"];
$recipename = $_GET['name'];

global $con;
$query1 = $con->prepare("UPDATE emptyfridge SET recipe_rating = recipe_rating + :recipe_rating WHERE recipe_name = :recipe_name1");
$query1->bindValue(':recipe_rating', $selectedrating);
$query1->bindValue(':recipe_name1', $recipename);
$query1->execute();

$query2 = $con->prepare("UPDATE emptyfridge SET recipe_ratingcounter = recipe_ratingcounter + 1 WHERE recipe_name = :recipe_name2");
$query2->bindValue(':recipe_name2', $recipename);
$query2->execute();
}

任何帮助将不胜感激。

最佳答案

bindValue 用于原始值。示例:

$sql->bindValue(":val1", "tuna pasta");
$sql->bindValue(":val2", 1234);

您必须对变量中的值使用 bindParam。示例:

$var1 = "tuna pasta";
$var2 = 1234;
$sql->bindParam(":val1", $var1);
$sql->bindParam(":val2", $var2);

关于php - 当来自 $_GET 的值时,PDO bindValue 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29037379/

相关文章:

php - RabbitMQ (PHP) 是否可以在发布之前检查 channel 是否有监听器?

mysql - 如何根据 if 条件将一行分成 2 行

php - 蓬勃发展 : How to select one-to-many

php - PDO 选择 [和 - 或]

php - PDO 语句获取 - 无法访问空属性

php - 推特 API 1.1 - 返回 NULL

php - 有人可以帮忙解决 MYSQL 错误消息吗?

php - MySQL MAX CONNECTIONS PER HOUR 最优值

mysql - 关于适用日期的数据库设计

php - PDO结果集是如何存储的