2015-12-31 76 views
0

我有2个过程insertTemp()Search()页面更改后关闭mysql连接

这里是InsertTemp():

CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertTemp`(
    IN keyword TEXT 
    ) 
    BEGIN 
    DROP TABLE IF EXISTS TempResult; 
    CREATE TEMPORARY TABLE TempResult 
    (
    id   INT(11), 
    title  TEXT, 
    author TEXT, 
    publisher TEXT, 
    );    

    INSERT INTO tempCariOpac 
    SELECT * from TempResult; 

    END 

和搜索():

CREATE DEFINER=`root`@`localhost` PROCEDURE `Search`(
IN limit1 INT, 
IN limit2 INT, 
) 
BEGIN 
SELECT * from catalogs  

     LIMIT limit1,limit2;  
END 

在我的第一页我执行InsertTemp()Search()和我的第二页上我运行搜索()只,因为在第一页我已经运行InsertTemp()并创建临时表。 Search()正在从临时表中搜索数据,但进入第2页后,我的临时表不存在。我认为这是由一个封闭的连接引起的。

我可以让sql连接keepalive?

在.net中我没有这个问题。

回答

1

临时表只对创建它的连接可见。可能有300个临时表,全部由相同的名称,并且不中断或相互冲突。实际上,您无法访问其他连接创建的临时表。

因此,当您查询时,您将从由相同连接创建的临时表中获得结果。

如果关闭连接,临时表将被删除。因此,故事的道德,创建一个临时表,然后查询它,全部在同一个连接。

然而,尝试这种方法来创建MySQL的持久连接从PHP,这可能会帮助你。

http://php.net/manual/en/function.mysql-pconnect.php