我正在尝试使用PHP,SQL,PDO创建一个基本的评分函数,该函数将用户给“字段recipe_rating”的评分值添加进来,然后添加1到“recipe_ratingcounter”字段。
但是,有些东西并不完全正确,我的代码在下面!两行$ query1-> bindValue(2,$ recipename);和$ query2-> bindValue(1,$ recipename);工作不正常,因为它们实际上并未将任何内容绑定到SQL语句中的相应占位符。 SQL语法是正确的,因为当上面的$ recipename变量被替换为单个字符串,比如“金枪鱼面食”或“spag bol”而不是$ _GET ['name']时,整个函数可以正常工作。
的var_dump显示$ RecipeName中作为字符串当两个:
$ RecipeName中= $ _GET [ '名称'];
$ 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();
}
任何帮助将非常感激。
您对使用GET还是POST是否感到困惑。尝试'$ _REQUEST',因为它涵盖了两者。 – developerwjk 2015-03-13 16:34:37
这两种情况之间只有一个区别($ _GET vs $ _POST) - 因此页面被调用的查询字符串无效(不包含'name'或期望值)。 – user2864740 2015-03-13 16:35:08
除了get v.s/tuna bit之外,你的两个代码示例没有区别。 MySQL或PHP可以不关心这一点。就任何一方而言,他们只会是字符串。 – 2015-03-13 16:35:16