语句为 select a.charge_person,a.charge_money,a.time_insert,b.time_insert,sum(b.moneys),(a.charge_money-sum(b.moneys))balance from (advcharge a) left join (basic b) on (a.charge_person=b.contact) where (b.time_insert>a.time_insert) group by chagre_person; 
在mysql中可以运行 
但是在PHP中用 
$result = $conn->query("select a.charge_person,a.charge_money,sum(b.moneys),(a.charge_money-sum(b.moneys))balance,a.time_insert from advcharge a left join basic b on a.charge_person=b.contact ;"); 
运行时没有结果 去掉where 子句 和group by 子句 才能运行 

解决方案 »

  1.   

    sql语句如果放到变量里,可能是变量的长度不够?
      

  2.   

    有可能 后面无论加什么子句都无法执行 怎么改变变量的长度 或 用其他方法运行这条sql呢
      

  3.   

    这句的长度似乎不算长啊。建议你检查一下你的程序,或者打开你的MYSQL日志功能,看一下你到底执行的是什么SQL语句。
      

  4.   

    查看MySQL日志 php里运行的sql语句 和我在MySQL命令行里写的语句一摸一样....
    090906 20:58:41    4 Connect root@localhost on billing
        4 Query select a.charge_person,a.charge_money,a.time_insert,b.time_insert,sum(b.moneys),(a.charge_money-sum(b.moneys))balance from (advcharge a) left join (basic b) on (a.charge_person=b.contact) where (b.time_insert>a.time_insert) group by a.chagre_person
        4 Quit
    090906 21:03:13    5 Connect root@localhost on 
        5 Query select @@version_comment limit 1
    090906 21:04:36    5 Query SELECT DATABASE()
        5 Init DB billing
    090906 21:07:09    5 Query select a.charge_person,a.charge_money,a.time_insert,b.time_insert,sum(b.moneys),(a.charge_money-sum(b.moneys))balance from (advcharge a) left join (basic b) on (a.charge_person=b.contact) where (b.time_insert>a.time_insert) group by a.charge_person
      

  5.   

    但是在命令行里我能得到结果 在php里就得不到结果
      

  6.   

    debug你的sql应该是没什么问题
    问题可能处在和php接口吧
      

  7.   

    如果删掉where group by 子句 得到的gettype result是 object 如果不删减 直接写 gettype result得到的是 Boolean 我连库的代码是function db_connect2()
    {     
     $result = new mysqli('localhost', 'root', 'root', 'billing'); 
     if (!$result)
    throw new Exception('Could not connect to database server');
    else
     return $result;
    }
    问题是不是跟我用mysqli连库有关呢
      

  8.   

    是不是由于SQL执行过长了?你的timeout 设置是多少?看看直接在mysql.exe 中运行时花了多少时间?
      

  9.   

    连库代码
    function db_connect2()
    {     
     $result = new mysqli('localhost', 'root', '30404891', 'billing'); 
     if (!$result)
    throw new Exception('Could not connect to database server');
    else
     return $result;
    }php执行查询代码
    function get_precharger($username)
    {  $conn = db_connect2();
     $result = $conn->query("select a.charge_person,a.charge_money,a.time_insert,b.time_insert,sum(b.moneys),(a.charge_money-sum(b.moneys))balance from (advcharge a) left join (basic b) on (a.charge_person=b.contact) where (b.time_insert>a.time_insert) group by a.chagre_person");
    echo gettype($result);
      if (!$result)
        return false; 
      $url_array = array();
      for ($count = 1; $row = $result->fetch_array(); ++$count) 
      {
        $url_array[$count] = array($row[0],$row[1],$row[2],$row[3],$row[4],$row[5]);  }  
      return $url_array;
    }页面调用函数代码 <?php
     require_once('book_fns.php');
     session_start(); $_SESSION['valid_user']=111;
      $url_array = get_precharger($_SESSION['valid_user']);
      display_advcharger($url_array); precharge_menu();
     ?>
      

  10.   

    timeout 是默认的 尝试改为20 但还是不行
      

  11.   

    刚才试用传统mysql mysql_connect
    函数连库了 但是还是不行result type 还是Boolean