sp开发过程中的问题

#1 xpp1000

用SP开发过程中发现一个问题,我用$sp->query($sql),如果SQL语有错的时候,或者没有输出结果的时候就会报错,特别是在分页的时候,
class main extends spController
{
function index()
{
  //echo "Hello World!";
  $this->title="预报名系统--首页";
  $userlist = spClass("yzclasss");  
// 这里使用了spPager,同时用spArgs接受到传入的page参数  
$sql="select * from yzclasss";
$qu=$this->spArgs("qu");
$lianji=$this->spArgs("lianji");
$xingzhi=$this->spArgs("xingzhi");
$this->results = $userlist->spPager($this->spArgs('page', 1), 8)->findSql($sql);  
//这里获取分页数据并发送到smarty模板内  
$this->pager = $userlist ->spPager()->getPager();  
  //$this->display("default/yubaoming.html");
  $this->display("index/index.html");
}
  
  
  
   function search()
{
  //echo "Hello World!";
  $this->title="预报名系统--首页";
  $userlist = spClass("yzclasss");  
// 这里使用了spPager,同时用spArgs接受到传入的page参数  
$sql="select * from yzclasss";
$qu=$this->spArgs("qu");
$lianji=$this->spArgs("lianji");
$xingzhi=$this->spArgs("xingzhi");
$keyword=$this->spArgs("keyword");
$sql=$sql." where qu='{$qu}' and lianji='{$lianji}' and xingzhi='{$xingzhi}'";
if($keyword)
{
$sql=$sql."and yuanming like '%{$keyword}%'";
//$_SESSION["sql"]=$sql;
}
//$sql1=$_SESSION["sql"];
echo $sql;
$sd=$userlist->query($sql);
echo $sd;
exit();
if($sd)
{
$this->results = $userlist->spPager($this->spArgs('page', 1), 8)->findSql($sql1);  
//这里获取分页数据并发送到smarty模板内  
$this->pager = $userlist ->spPager()->getPager();  
  //$this->display("default/yubaoming.html");
  $this->display("index/index.html");
  }
  else
  {
  $this->results="对不起没有记录";
  $this->display("index/index.html");
  }
}
  
  
  
  
  
  
  function check()
  {
    $sp=spClass("yonghu");
    $user=$this->spArgs("user");
    $pd=$this->spArgs("password");
    $sql="select *  from yonghu where user= '{$user}'  limit 0,1";
    $res=@$sp->query($sql);
   while($rsd=mysql_fetch_array($res))
    {$password=$rsd["password"];
  }
    if($password=$pd)
    {
    $_SESSION["fg"]=$rsd["fg"];
    $_SESSION["user"]=$user;
    echo "";
    }
    else
     {
    echo "";
   
    }
   
     
}
   
   }
?>
下面是我的模板,


  
   


  

   

   

      

      

用户名:

    密    码:


     


      
       注册


      

      
         
   

   
   
  

    




   

@2009-2010 kdgol.com Inc.All Right Reserved 中国幼儿园在线 版权所有



如果没有输出结果就会报错。用的sp3

2010-09-29 15:24:53

#2 jake

如果SQL有错误,那么SP就会报错。

另外,请注意 runSql(query)和findSql的分别,使用SQL查找是需要用findSql的,而不能用query(runSql)。
楼主的代码中,search()里面就用query来进行查找了。SP本身spMOdel的query函数和PHP函数mysql_query是不同的。在SP3中,spModel的query已经改名为runSql,以示区别:


runSql(query)—— 执行sql语句,主要是select,update,delete等。语句执行成功返回TRUE,数据库错误等返回false。


findSql(query)—— 使用SQL查找,主要是select。查找到结果返回结果数组,查询不到结果返回false。

2010-09-29 15:31:58

#3 xpp1000

问题已解决,$this->results = $userlist->spPager($this->spArgs('page', 1), 8)->findSql($sql1);  
这句错了,是$sql不是$sql1

2010-09-30 08:54:07