将GET变量转换为PHP字符串以在SQL查询中使用

时间:2019-02-20 20:09:44

标签: php

对于一个基本项目,我试图用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'");

但是,显示此内容时,页面上没有任何内容。但是,当我用“火星酒吧”之类的东西代替时,它的价格就会显示出来。我应该怎么做才能根据用户按下的按钮显示价格?

2 个答案:

答案 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>";