bind_result () не получает все результаты - PullRequest
1 голос
/ 08 января 2012

По какой-то причине он выполняет инструкцию, а затем 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 ]

2 голосов
/ 19 июля 2013

MySQLi не удается выделить достаточно памяти для максимального размера объекта LONGTEXT (~ 4 ГБ).

Это известная ошибка: https://bugs.php.net/bug.php?id=51386.

Обходной путь - преобразовать LONGTEXT.столбцы в MEDIUMTEXT или что-то еще меньше, или рассмотрите возможность использования альтернативной базы данных или класса интерфейса.

1 голос
/ 08 января 2012

Предполагается, что ваша исходная таблица в базе данных фактически предоставляет столбец для $postContent, когда вы делаете SELECT *:

Просмотрите исходный код HTML, который выводится вашим PHP-скриптом, чтобы увидеть, является ли $postContent фактически появляется в источнике, но не на экране.Вы не избежали вывода своей базы данных для HTML (кодировка < как &lt; и т. Д.), Поэтому возможно, что что-то в $postContent или более ранней переменной нарушает ваш вывод.Вместо того, чтобы напрямую выводить эти переменные, оборачивайте каждую из них в htmlspecialchars() при печати их внутри HTML.

<?php echo htmlspecialchars($postTitle); ?>
<?php echo htmlspecialchars($postUser); ?>
<?php echo htmlspecialchars($postDateTime); ?>
<?php echo htmlspecialchars($postCat); ?>
<?php echo htmlspecialchars($postContent); ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...