对于一个基本项目,我试图用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'");
但是,显示此内容时,页面上没有任何内容。但是,当我用“火星酒吧”之类的东西代替时,它的价格就会显示出来。我应该怎么做才能根据用户按下的按钮显示价格?
答案 0 :(得分:0)
从“ $ snackChoice”附近删除单个撇号:
"SELECT `price` FROM `snacks` WHERE `snackName` = $snackChoice"
或
"SELECT `price` FROM `snacks` WHERE `snackName` = '" . $snackChoice . "'"
答案 1 :(得分:0)
我建议您使用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>";