create table ty_test(
Name varchar(20) ,
Materialid varchar(50),
Picname varchar(50),
Due int(32)  
);
insert into ty_test values
('zxj','1120','机床','50');
insert into ty_test values
('xj','1110','底板','10');
insert into ty_test values
('zxj','1130','螺丝','20');
insert into ty_test values
('xj','11120','机床','35');
insert into ty_test values
('ty','1110','底板','25');
insert into ty_test values
('ty','1130','螺丝','15');SET @ee='';
SELECT @EE:=CONCAT(@EE,'SUM(IF(`name`=\'',`name`,'\'',',Due,0)) AS ',`name`,',') FROM (SELECT DISTINCT `name` FROM ty_test) A;
SET @QQ=CONCAT('SELECT ifnull(picName,\'total\'),',LEFT(@EE,LENGTH(@EE)-1),',SUM(Due) AS TOTAL FROM ty_test GROUP BY `picname` WITH ROLLUP');
PREPARE stmt2 FROM @QQ;
EXECUTE stmt2;
这段代码在php怎么获取查询结果啊?

解决方案 »

  1.   

    你开了太多帖子了,为什么要在MYSQL里有这么复杂的语句来生成SQL语句呢,完全可以在PHP里根据条件来生成SQL
      

  2.   

    我想在php实现交叉查询,
    SET @ee='';
    SELECT @EE:=CONCAT(@EE,'SUM(IF(`name`=\'',`name`,'\'',',Due,0)) AS ',`name`,',') FROM (SELECT DISTINCT `name` FROM ty_test) A;
    SET @QQ=CONCAT('SELECT ifnull(picName,\'total\'),',LEFT(@EE,LENGTH(@EE)-1),',SUM(Due) AS TOTAL FROM ty_test GROUP BY `picname` WITH ROLLUP');
    PREPARE stmt2 FROM @QQ;
    EXECUTE stmt2;
    这段代码网上找的,可以实现我要的功能,在mysql客户端可以实现,但我不知道怎么在php运行这段代码,获取结果。另外这段代码我也看得不是太懂。
      

  3.   

    <?php
    // Connecting, selecting database
    $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
        or die('Could not connect: ' . mysql_error());
    echo 'Connected successfully';
    mysql_select_db('my_database') or die('Could not select database');// Performing SQL query
    $query = 'SELECT * FROM my_table';
    $result = mysql_query($query) or die('Query failed: ' . mysql_error());// Printing results in HTML
    echo "<table>\n";
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
        echo "\t<tr>\n";
        foreach ($line as $col_value) {
            echo "\t\t<td>$col_value</td>\n";
        }
        echo "\t</tr>\n";
    }
    echo "</table>\n";// Free resultset
    mysql_free_result($result);// Closing connection
    mysql_close($link);
    ?>