create proc dbo.Tr_get_hidden
@ta_id int
as
declare @Sql nvarchar(4000)
declare @Ta_hidden nvarchar(100)
select @Ta_hidden=Ta_hidden from Tr_Admin where ta_id=@ta_id
if(@Ta_hidden!='')
begin
select @Sql=' where Tc_id='+replace(right(@Ta_hidden,len(@Ta_hidden)-1),'|',' or Tc_id=')
from Tr_Admin where ta_id=@ta_id
set @Sql='select Tc_id from tr_channel'+@Sql
exec(@Sql)
end
else
begin
select [Tc_id]=''
endTa_hidden列里是'|7|8',正常读出应该是
Tc_id
-----------
7
8
在mssql里是完全没问题,C#也可以读出数据
到了php怎么就读不出东西了?我是用COM连接数据库的~PHP带的mssql用不了~没办法
代码如下
$rs = @new COM("ADODB.RecordSet");
$rs->Open("Tr_get_hidden 1",$conn,1,3);
while($rs2->eof)
{
  echo($rs2->Fields["Tc_id"]->value);
  $rs2->MoveNext();
}
$rs->Close();

解决方案 »

  1.   

    include("dbmar.php");
    $sp=mssql_init("loadUser",$conn);
    mssql_bind($sp,"@uname",$_REQUEST[na],SQLVARCHAR,FALSE,FALSE,16);
    mssql_bind($sp,"@upwd",$_REQUEST[password],SQLVARCHAR,FALSE,FALSE,16);
    mssql_bind($sp,"@count",$rslt,SQLINT4,TRUE,FALSE);
    mssql_execute($sp,true);
    echo $_REQUEST[na];
    echo $_REQUEST[password];
    echo $rslt;
      

  2.   

    换个方法就可以读出了~我用odbc就能读出这些数据~
    大概是COM不支持内含多查询的存储过程吧~反正我用COM没试过有一个多查询存储过程能读出数据的~用了odbc又发现~odbc好象不支持存储过程里的text类型~读text类型总是空~只能单独做一个查询语句读~
    不过总比COM好了~送分