1
私はmysqlのストアドファンクションに新しく、なぜ自分の結果が65535文字の長さで切り捨てられているのか疑問に思います。私はそれがconcat関数と関係があると感じていますが、この問題を解決することはできません。長さが65535文字のMysqlストアドファンクション
テストテーブルに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
はここでそれを呼び出している私のPHPで... TEXTカラムのサイズだ
<?
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();
// }
?>
私はそれができるようになると、私は答えとしてマークします。ありがとう –