bind_result()没有得到所有结果

时间:2012-01-08 16:07:44

标签: mysqli

由于某种原因,它执行语句,然后bind_results返回所有值,但不返回$ postContent的最后一个值。

<?php
            if (isset($_GET['postID']))
            {
                $postID = $_GET['postID'];
                $stmt = $mysqli->prepare("SELECT * FROM Posts WHERE postID = ?");
                $stmt->bind_param('i', $postID);
                $stmt->execute();
                $stmt->bind_result($postID, $postTitle, $postCat, $postUser, $postDateTime, $postContent);
                $stmt->fetch();
                echo $postContent;
                ?>
                <h1><?php echo $postTitle;?></h1>
            </div> <!-- End of box div -->
            <div class="blogroll"> <!-- Start of blogroll div -->
            <div class="top"></div> <!-- Start and end of top div -->

            <div class="post"> <!-- Start of post div -->
                <div class="post_date">Posted by <?php echo $postUser;?> on <?php echo $postDateTime ?> Category : <?php echo $postCat;?></div> <!-- Start and end of post_date div -->
                <div class="post_text"> <!-- Start of post_text div -->
                    <?php echo $postContent;?>
                </div> <!-- End of post_text div -->
                <?php
            }
        ?>

2 个答案:

答案 0 :(得分:2)

MySQLi无法为LONGTEXT对象的最大大小(~4,4b)分配足够的内存。

这是一个已知错误:https://bugs.php.net/bug.php?id=51386

解决方法是将LONGTEXT列转换为MEDIUMTEXT或其他更小的列,或考虑使用备用数据库或接口类。

答案 1 :(得分:1)

这假设您执行$postContent时数据库中的源表实际上为SELECT *提供了一列:

查看PHP脚本输出的HTML源代码,以查看$postContent是否实际出现在源代码中但未显示在屏幕上。您尚未转义HTML的数据库输出(将<编码为&lt;等等),因此$postContent或早期变量中的某些内容可能会破坏您的输出。而不是直接回显这些变量,在HTML中打印它们时将每个变量包装在htmlspecialchars()中。

<?php echo htmlspecialchars($postTitle); ?>
<?php echo htmlspecialchars($postUser); ?>
<?php echo htmlspecialchars($postDateTime); ?>
<?php echo htmlspecialchars($postCat); ?>
<?php echo htmlspecialchars($postContent); ?>