Php Mysql存储函数长度截断为65535个字符

Php Mysql存储函数长度截断为65535个字符,php,mysql,pdo,Php,Mysql,Pdo,我不熟悉mysql中的存储函数,我想知道为什么我的结果会被截断为65535个字符。我觉得它与concat函数有关,但无法解决此问题 我的测试表中有超过10k行,但是这个函数只将1936行组合到我生成的表中,我知道它被截断了,因为我的结束表标记丢失了…任何细节都将不胜感激 以下是我的存储过程: CREATE DEFINER=`root`@`localhost` FUNCTION `hotdog`() RETURNS text CHARSET utf8 BEGIN DECLARE str TEXT

我不熟悉mysql中的存储函数,我想知道为什么我的结果会被截断为65535个字符。我觉得它与concat函数有关,但无法解决此问题

我的测试表中有超过10k行,但是这个函数只将1936行组合到我生成的表中,我知道它被截断了,因为我的结束表标记丢失了…任何细节都将不胜感激

以下是我的存储过程:

CREATE DEFINER=`root`@`localhost` FUNCTION `hotdog`() RETURNS text CHARSET utf8
BEGIN
DECLARE str TEXT DEFAULT "<table>";
DECLARE done INT DEFAULT 0;
DECLARE var1 INT;
DECLARE var2 INT;
DECLARE curs CURSOR FOR  SELECT * from `test`;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    OPEN curs;
    SET done = 0;
    REPEAT
        FETCH curs INTO var1, var2;
        SET str = concat(str, "<tr><td>");
        SET str = concat(str, var1);
        SET str = concat(str, "</td><td>");
        SET str = concat(str, var2);
        SET str = concat(str, "</td></tr>");
    UNTIL done END REPEAT;
SET str = concat(str, '</table>');
RETURN str;
END
CREATE DEFINER=`root`@`localhost`函数`hotdog`()返回文本字符集utf8
开始
声明str文本默认值为“”;
声明完成INT默认值为0;
声明var1 INT;
声明var2 INT;
为“测试”中的SELECT*声明游标;
为未找到的集合声明CONTINUE处理程序done=1;
开放游标;
设置完成=0;
重复
将curs获取到var1、var2中;
设置str=concat(str,“”);
设置str=concat(str,var1);
设置str=concat(str,“”);
设置str=concat(str,var2);
设置str=concat(str,“”);
直到完成为止重复;
设置str=concat(str',);
返回str;
结束
这是我的php调用它

<?
    include 'includes/config.inc.php';
    $q = $db->prepare("select hotdog() as hotdog1");
    $q->execute();
    $row = $q->fetch(PDO::FETCH_ASSOC);
    echo $row['hotdog1'];
    // for($i=1; $i<500000; $i++)
    // {
        // $qs = "INSERT INTO `test`(`id`, `test`) VALUES (Null,$i)";
        // $q = $db->prepare($qs);
        // $q->execute();
    // }
?>

这是文本列的大小


您正在将str声明为文本。如果你想存储更多的内容,你需要中文本或长文本。

是的,这就成功了,我会在允许的时候标记为答案。谢谢