if ($stmt - > execute()) {
if ($stmt - > rowCount() > 0) {
$menu_id = array();
while ($selected_row = $stmt - > fetch(PDO::FETCH_ASSOC)) {
$menu_id[] = array('menuid' => $selected_row['menulist_id'], );
}
$stmt = $dbh - > prepare("SELECT * FROM menulist_tbl WHERE menulist_id = :menuid AND menu_displayorder <= :value");
$menu_name = array();
$input = array_map("unserialize", array_unique(array_map("serialize", $menu_id)));
//print_r($menu_id);
//print_r($input);
foreach($input as $row) {
$stmt - > execute(array(':menuid' => $row['menuid'], ':value' => '10000'));
//while ($selected_row =$stmt->fetch(PDO::FETCH_COLUMN, 0)){
while ($selected_row = $stmt - > fetch(PDO::FETCH_ASSOC)) {
$menu_name[] = array('displayorder' => $selected_row['menu_displayorder'], 'menuname' => $selected_row['menu_name'], 'menuurl' => $selected_row['menu_url'], 'menuflag' => $selected_row['menu_flag'], 'menuid' => $selected_row['menulist_id']);
}
}
array_multisort($menu_name);
//print_r($menu_name);
return $menu_name;
}
}
这是我从数据库获取菜单的方法,此代码将执行以下操作:
从另一个查询的结果中,它将在menulist_id
数组中存储,然后我将使用此menulist_id
在菜单表中查询显示顺序为less 10000
的菜单名称,我有less than 10000
的这个参数,因为我可以从菜单列表中隐藏菜单而不删除它们所以我想再次显示它们我只是减少它们的显示顺序,它们可以再次被看到。但是为什么我的显示顺序参数不工作,即使我的显示顺序为10011
,菜单仍然显示。任何想法都表示赞赏
FYI
列menu_displayorder是varchar。
答案 0 :(得分:0)
对于varchar,您需要CAST
作为可以使用>=
更好地控制的数值数据类型,请尝试以下操作:
AND CAST(menu_displayorder AS UNSIGNED) <= :value