对于一个基本的项目,我试图模拟一个带有MySQL数据库后端的自动售货机。我的问题是:当用户按下他们想要购买的按钮时,应该显示该项目的价格。但是,当我尝试使用基于按下的按钮的变量从数据库中查询价格时,它没有显示价格。但是,当我在查询中插入项的名称时,它确实起作用了。
我已经用这个生成了一个表。
echo "<tr><td>" . $snackName . "</td><td>" . $price . "
<a href = 'buying.php?varname= " . $snackName . "'><button>Buy</button></a>
</td></tr>";
然后在购买页面上,我尝试这样做。
$snackChoice = $_GET['varname'];
$sql = ("SELECT `price` FROM `snacks` WHERE `snackName` = '$snackChoice'");
但是,在显示此信息时,页面上不显示任何内容。但是当我用诸如“玛氏酒吧”之类的东西来替代它时,它的价格就会显示出来。我应该怎么做才能根据用户按下的按钮显示价格?
发布于 2019-02-21 04:19:48
我可以建议您使用id而不是snakName来执行查询。
如果您有,如果没有,请将其作为AUTO_INCREMENT添加到表中。这将更容易管理、清理和查询数据库。
$snackId = $_GET['snackId'];
// perform validation, mitigate SQL injection
if(!is_numeric($snackId)){
// redirect the user
header('redirect:index.php');
exit();
// or change the value to 0...
$snakId = 0;
}
$sql = ("SELECT `price` FROM `snacks` WHERE `snackid` = '$snackId'");
在表单中,只需将名称替换为id。
print "<tr>
<td>" . $snackName . "</td>
<td>" . $price . "
<a href = 'buying.php?snackId= " . $snackId . "'><button>Buy</button></a>
</td>
</tr>";
发布于 2019-02-21 04:12:25
去掉'$snackChoice‘前后的单个撇号:
"SELECT `price` FROM `snacks` WHERE `snackName` = $snackChoice"
或
"SELECT `price` FROM `snacks` WHERE `snackName` = '" . $snackChoice . "'"
https://stackoverflow.com/questions/54794487
复制相似问题