我是php和sql新手,所以在执行任务时遇到了一些问题。
任务是:我有一个包含3列的数据库,有一个城市名、minvalue和maxvalue。这个数据库必须有大约200行,如下所示:
|第1列第2列第3列|
|圣保罗65000000 6500000|
|巴西利亚69000000 6509000|
我必须接收一个值,并检查它是否在第2列和第3列的值之间,并且必须检查表中的每一行。
现在,我从post获取值,并执行以下操作:

 <body>
  <?php
  $cep = $_POST["cep"];
  $connect = mysqli_connect("--db settings--");
  $query = mysqli_query($connect, "SELECT * FROM tabela_cep WHERE $cep BETWEEN `COL 2` AND `COL 3`");
  $dados= mysqli_fetch_array($query);

    $cep_lenght = strlen((string)$cep);
    if($cep_lenght == 7) {
        $cep = (string)$cep;
        $cep = "0" . $cep;
    }else{
        return;
    }
    if($dados) {
    echo "<p>The value <strong>$cep</strong> is valid !</p>";
  }else {
    echo "<p>The value <strong>$cep</strong> is invalid !</p>";
  }
     ?>

问题是:我提交的每个值都被认为是有效的。
我现在正在学习php,但我从基础开始,因为我需要尽快解决这个问题,我需要你的帮助。我做错什么了?

最佳答案

SELECT * FROM tabela_cep WHERE $cep > `COL 2` AND $cep < `COL 3`

同样,正如前面所说,您没有消毒您的输入。确保这样做是为了避免sql注入。

10-07 14:15