[英]Between min and max value mysqli
我必须创建一个包含两个文本字段的PHP网页,用户可以在其中输入SQL数据库中的最低和最高商品价格。 所以我有带价格的物品。 例如,如果用户希望查看价格在4到15之间的商品,则可以提交该商品,然后它将仅显示该价格范围内的商品。 我怎样才能做到这一点? 如何回应呢?
谢谢!
到目前为止,我有:
$min=$_POST["minimum"];
$max=&$_POST["maximum"];
$result = mysqli_query($con,"SELECT * FROM items WHERE selling price BETWEEN {$min}+1 AND {$max}");
除了主要的SQL注入问题外,您的脚本看起来还不错。 只是一些小的错误和语法错误。 将此与您的比较:
$min=(int)$_POST["minimum"];
$max=(int)$_POST["maximum"];
$result = mysqli_query($con,"SELECT * FROM items WHERE selling_price BETWEEN {$min}+1 AND {$max}");
那么,我做了什么改变?
&
字符。 您不需要通过引用分配值。 只是分配普通的旧方法 这样做的许多更安全,更简单的方法之一是
$dsn = "mysql:dbname=test;host=127.0.0.1";
$dbh = new PDO($dsn, 'username', 'password');
if(isset($_POST["minimum"]) && isset($_POST["maximum"]))
{
$min=floatval($_POST["minimum"]); //+1 is not needed
$max=floatval($_POST["maximum"]);
$sth = $dbh->prepare("SELECT * FROM items WHERE selling_price BETWEEN ? AND ?");
$sth->execute(array($min,$max));
while($row = $sth->fetch(PDO::FETCH_OBJ))
{
print_r($row);
}
}
那应该为您解决问题:
if(isset($_POST['minimum'])){
$min = $_POST['minimum'];
}else{
$min = '';
}
if(isset($_POST['maximum'])){
$max = $_POST['maximum'];
}else{
$max = '';
}
$sql = "SELECT * FROM item WHERE selling_brice > '$min' AND selling_price < '$max'";
$query = mysqli_query($con, $sql);
$count = mysqli_num_rows($query);
if($query == true && $count > 0 ){
while ($row = mysqli_fetch_assoc($query)){
$price .= $row['selling_price'];
$price .= '<br />'
}
echo $price;
}else{
echo "NO results to Display";
}
当然,这不是最佳的mysql注入编程方法,您的查询使用*等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.