【发布时间】:2017-08-29 17:10:48
【问题描述】:
我的表 accounts 中有一个名为 weight 的列。我需要从该列中获取值,例如,
当用户点击体重在40-100之间时,需要显示所有体重在40-100之间的人。
这是我的html代码,
<div class="float-right span35">
<form class="list-wrapper search-form" method="get" action="{{CONFIG_SITE_URL}}/index.php">
<div class="list-header">
Talent Search
</div>
<h4 style="margin-left: 10px; color: gray;">Weight</h4>
<fieldset id="weight">
<input type="checkbox" name="weight" value="1" {{WEIGHT_1}}/>Below 40<br>
<input type="checkbox" name="weight" value="2" {{WEIGHT_2}}/>40-70<br>
<input type="checkbox" name="weight" value="3" {{WEIGHT_3}}/>70-100<br>
<input type="checkbox" name="weight" value="4" {{WEIGHT_4}}/>Above 100<br>
</fieldset>
<br/>
<input style="margin-left: 10px" type="submit" name="submit" value="search"/><br><br>
<input type="hidden" name="tab1" value="search">
</form>
</div>
这是我的php代码,
if(isset($_GET['submit'])){
$weight = ($_GET['weight'])? $escapeObj->stringEscape($_GET['weight']): NULL;
$sql = "SELECT id FROM `".DB_ACCOUNTS."` WHERE `id` IS NOT NULL ";
if(is_numeric($weight) && $weight != NULL){
$sql .= "AND `weight` IN (".$weight.")";
$is_weight = true;
}
$sql .= " ORDER BY `id` ASC";
}
if($is_weight){
$themeData['weight_'.$weight] = 'checked';
}
$query = $conn->query($sql);
if($query->num_rows > 0){
while($fetch = $query->fetch_array(MYSQLI_ASSOC)){
$get[] = $fetch['id'];
}
$i = 0;
$listResults = '';
$themeData['page_title'] = "Advanced Search - ".$lang['search_result_header_label'];
foreach($get as $row){
$timelineObj = new \SocialKit\User();
$timelineObj->setId($row);
$timeline = $timelineObj->getRows();
$themeData['list_search_id'] = $timeline['id'];
$themeData['list_search_url'] = $timeline['url'];
$themeData['list_search_username'] = $timeline['username'];
$themeData['list_search_name'] = $timeline['name'];
$themeData['list_search_thumbnail_url'] = $timeline['thumbnail_url'];
$themeData['list_search_button'] = $timelineObj->getFollowButton();
$listResults .= \SocialKit\UI::view('search/list-each');
$i++;
}
$themeData['list_search_results'] = $listResults;
}
}
此代码几乎适用于表格中的单个重量。但是我需要在代码中提到的复选框值之间创建一个范围。我需要更新代码吗?
【问题讨论】:
-
如果您要添加范围,则需要在查询中进行更改并添加类似“where weight >=min && weight
-
作为 php 和 mysql 的新手,我不知道如何清楚地做到这一点。你能帮我找到吗? @bdalina。
-
什么值被传递给 php?这个1,2,3,4?每个都有最小值和最大值 1=40 到 100?
-
传递存储在数据库表中的整数值
-
不要通过字符串连接构建 SQL 查询。 SQL 注入攻击就是这样。