sql 问题

qianqi888 2014-03-26 02:58:23
$sql= " SELECT TF.SLIP_I_NO AS SLIP_I_NO , TF.SENDER_CITY AS SENDER_CITY , C.ORDER_NO AS ORDER_NO".
" FROM TF_SLIP_TRANS_DATA TF ,TCLAIMDT C ".
" WHERE TF.SLIP_I_NO = C.ORDER_NO||C.ORDER_G_SEQ||C.ORDER_D_SEQ||C.ORDER_W_SEQ ".
" AND C.CLAIM_GB IN ('30','45') AND C.DO_FLAG='50' AND TF.DELY_GB = '13' ";
$n=$DB->ExecSQL( $sql );
while( $DB->Fetch() ) {
$SLIP_I_NO=$DB->Load_Field( "SLIP_I_NO" ); //取退编
$SENDER_CITY=$DB->Load_Field( "SENDER_CITY" ); //取城市
$ORDER_NO=$DB->Load_Field( "ORDER_NO" ); //取城市
$BILL_SLIP_I_NO = $SLIP_I_NO ;

$SQL="SELECT SLIP_I_NO FROM TSLIPDT ".
" WHERE ORDER_NO =$ORDER_NO ".
" AND ORDER_G_SEQ =001 ".
" AND ORDER_D_SEQ =001 ".
" AND ORDER_W_SEQ =001 ";
echo $SQL ;
$n=$DB->ExecSQL( $SQL );
$DB->Fetch() ;
$BILL_SLIP_I_NO=$DB->Load_Field( "SLIP_I_NO" );
echo "$BILL_SLIP_I_NO\n" ;
}


---
遇到一个奇怪问题。 两层sql语句 ,第一层sql查询可以查出3笔数据,也就是while()执行三次。但如果在while()中在嵌套写查询语句。最外层的就只执行一次,就不往下执行了。
...全文
81 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2014-03-26
  • 打赏
  • 举报
回复
很正常! 通常数据库操作类都设计成只支持单一查询的 所以你可以这样用 $DB->ExecSQL( $SQL ); $DB->Fetch() ; 即查询结果集资源被缓存在类中 于是当你第二次 $DB->ExecSQL( $SQL ) 时就把第一次的结果集资源给覆盖了 所以外层循环只能执行一次 解决的办法是在循环内再实例化一个数据库类,比如 $DB2 = new DB;
qianqi888 2014-03-26
  • 打赏
  • 举报
回复
通过echo $ORDER_NO ; 如果不写里边的查询,就执行三次 ,即 $ORDER_NO 输出三笔订单号 。如果加了里边的查询,就只能得到一笔订单号。 我也是相当奇怪,测试好多次 都是这样
一起混吧 2014-03-26
  • 打赏
  • 举报
回复
不可能吧,你通过什么判断只执行了一次的?

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧