我是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注入。