<?php
if (isset($_GET['cid'])&&(!is_numeric($_GET['cid']))) {NewUrl (1,'ID参数出现非数字错误!','-1');}
$nLink = $db->SelectSQL("SELECT `ColumnRela`,`ColumnName` FROM `" . $dbprefix . "column` WHERE `ID` = '" . $_GET['cid'] . "'");
if (isset($_GET['cid'])&&(count($nLink)==0)){NewUrl (1,'不存在的分类!','-1');}
?>
这里为页面接收了一个名为cid的参数,我想当这个参数存在的时候才判断它是否是个合法的参数类型和在数据库是否存在,这个前面类型判断貌似没错,后面判断在数据库里是否存在好像出了错误,当这个参数为空时也总提'不存在的分类!'哪位高人来指点一下问题出在哪里?

解决方案 »

  1.   

    //if (isset($_GET['cid']) && $_GET['cid'] &&(count($nLink)==0)){
    // NewUrl (1,'不存在的分类!','-1');
    //}
      

  2.   

    为空的情况你没有在第一步里考虑到,自然就跑了下面来烦你了,查询一个ID为空的结果集你去count也是0。把第一步去掉点东西就可以
    if (is_numeric($_GET['cid']))) {NewUrl (1,'ID参数出现非数字错误!','-1');}
      

  3.   

    isset($_GET['cid'])判断完全没有必要,你只要传了cid,哪怕它是空的,isset($_GET['cid'])依然是真!
      

  4.   

    <?php
    if (isset($_GET['cid'])&&(!is_numeric($_GET['cid']))) 
    {    
         NewUrl (1,'ID参数出现非数字错误!','-1');}
    //当这个参数cid为空时继续执行下面这条语句
    $nLink = $db->SelectSQL("SELECT `ColumnRela`,`ColumnName` FROM `" . $dbprefix . "column` WHERE `ID` = '" . $_GET['cid'] . "'");
    //由于已经设置参数cid, 即使参数cid为空,isset($_GET['cid'])结果也是真的!
    但是count($nLink)==0)这个是假!所以报:不存在的分类!
    if (isset($_GET['cid'])&&(count($nLink)==0)){NewUrl (1,'不存在的分类!','-1');}?>
    代码逻辑似乎有问题:
    <?php
    if (isset($_GET['cid'])&&(!is_numeric($_GET['cid']))) 
    {    
         NewUrl (1,'ID参数出现非数字错误!','-1');
         exit;//退出}
    $nLink = $db->SelectSQL("SELECT `ColumnRela`,`ColumnName` FROM `" . $dbprefix . "column` WHERE `ID` = '" . $_GET['cid'] . "'");//如果$nLink是经过mysql_query和mysql_fetch_array()的结果下面可以执行:
    if (count($nLink)==0){NewUrl (1,'不存在的分类!','-1');}?>