将文本添加到数据库

时间:2016-01-13 13:44:09

标签: php mysql pdo escaping

我尝试使用PHP和$ _POST方法将此文本添加到MySQL数据库中:

HTML:

<form name="addBook" action="?action=save" method="post" enctype="multipart/form-data">
        <table>
        <tr>
            <td>Boek naam</td>
            <td><input type='text' name='book_name'  required></td>
        </tr>
        <tr>
            <td>Genre</td>
            <td><input type='text' name='book_genre'  required></td>
        </tr>
        <tr>
            <td>Cover</td>
            <td><input type='file' name='cover' id='cover'></td>
        </tr>
        <tr>
            <td>Text</td>
            <td><textarea cols='50' rows='20' name='book_text'>Schrijf hier</textarea></td>
        </tr>
        <tr>
            <td colspan="2"><input type="reset" name="reset" value="Remove text">
            <input type="submit" name="submit" value="Save"></td>
        </tr>
        </table>
        </form>

PHP:

$query = $db->prepare("
                INSERT INTO `books` (`book_name`, `book_text`, `book_genre`, `book_cover`) VALUES (:name, :text, :genre, :fulldir)");
    $query->bindParam(':name', $book_name);
    $query->bindParam(':text', $book_text);
    $query->bindParam(':genre', $book_genre);
    $query->bindParam(':fulldir', $fulldir);
    $query->execute();

这是文字:

  

“Lorem ipsum dolor sit amet,consectetur adipiscing elit.Curabitur nec metus eget enim egestas rhoncus.Cras id suscipit augue.Muuris dignissim semper ligula,non rhoncus mi sollicitudin sed。在hac habitasse platea dictumst.Maecenas non augue eu augue ultrices塞德卢卡斯自由自治区。在塞塔菲利斯的Ut vitae felis eu nunc porttitor fermentum.Curabitur pulvinar,tortor ut gravida facilisis,eros lectus condimentum metus,cursus dapibus sapien lacus vel nisl.Maecenas rut​​rum nunc eget convallis imperdiet.Fusce felis ex,vehicula placerat erat ut,eleifend consequat dolor.Vostibulum fringilla elementum ante,fringilla luctus elit faucibus eget。

     

Etiam ac enim non nisl elementum dapibus vel quis augue。 Sed vestibulum,lacus vitae ultricies dictum,lacus augue sodales justo,sit amet efficitur purus neque vitae magna。 Duis malesuada sagittis tortor,in commodo nisi hendrerit ut。 Quisque quis tincidunt odio。 Ut cursus enim nec venenatis laoreet。 Vestibulum erat diam,egestas vitae scelerisque sed,pulvinar an turpis。 Curabitur odio justo,ornare eget tortor eu,commodo condimentum est.Nam dictum,augue tempor dictum porttitor,mi turpis volutpat eros,tristique metus ipsum nec enim。“

但是当我添加文本时,它会删除两段之间的空格:

  

“Lorem ipsum dolor sit amet,consectetur adipiscing elit.Curabitur nec metus eget enim egestas rhoncus.Cras id suscipit augue.Muuris dignissim semper ligula,non rhoncus mi sollicitudin sed。在hac habitasse platea dictumst.Maecenas non augue eu augue ultrices塞德卢卡斯自由自治区。在塞塔菲利斯的Ut vitae felis eu nunc porttitor fermentum.Curabitur pulvinar,tortor ut gravida facilisis,eros lectus condimentum metus,cursus dapibus sapien lacus vel nisl.Maecenas rut​​rum nunc eget convallis imperdiet.Fusce felis ex,vehicula placerat erat ut,eleifend consequat dolor.Vostibulum fringilla elementum ante,fringilla luctus elit faucibus eget.Etiam ac enim non nisl elementum dapibus vel quis augue.des vestibulum,lacus vitae ultricies dictum,lacus augue sodales justo,sit amet efficitur purus neque vitae magna.Duis malesuada sagittis tortor,in commodo nisi hendrerit ut.Quisque quis tincidunt odio.Ut cursus enim nec venenatis laoreet.Vestibulum erat diam,egestas vitae scelerisque sed,pulvinar a turpis。 Curabitur odio justo,ornare eget tortor eu,commodo condimentum est.Nam dictum,augue tempor dictum porttitor,mi turpis volutpat eros,tristique metus ipsum nec enim。“

如何在保留段落之间的空格的同时将文本添加到数据库中?

2 个答案:

答案 0 :(得分:0)

新行字符\n不会显示在浏览器中。您需要将它们转换为<br> s。这可以使用数据插入或输出上的nl2br来完成。例如:

$query = $db->prepare("
                INSERT INTO `books` (`book_name`, `book_text`, `book_genre`, `book_cover`) VALUES (:name, :text, :genre, :fulldir)");
    $query->bindParam(':name', $book_name);
    $query->bindParam(':text', nl2br($book_text));
    $query->bindParam(':genre', $book_genre);
    $query->bindParam(':fulldir', $fulldir);
    $query->execute();

演示:http://sandbox.onlinephpfunctions.com/code/ac2f35000833f6c91e2d96bf10a09b96ea182ae8

或输出法......

echo nl2br($row['book_text']);

答案 1 :(得分:-1)

这里是本文的Inster。更改表名和字段名。

INSERT INTO `mytable` (`fieldname`)
VALUES
    ('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur nec metus eget enim egestas rhoncus. Cras id suscipit augue. Mauris dignissim semper ligula, non rhoncus mi sollicitudin sed. In hac habitasse platea dictumst. Maecenas non augue eu augue ultrices commodo a accumsan magna. Sed luctus nulla libero. Ut vitae felis eu nunc porttitor fermentum at porta felis. Curabitur pulvinar, tortor ut gravida facilisis, eros lectus condimentum metus, cursus dapibus sapien lacus vel nisl. Maecenas rutrum nunc eget convallis imperdiet. Fusce felis ex, vehicula placerat erat ut, eleifend consequat dolor. Vestibulum fringilla elementum ante, fringilla luctus elit faucibus eget.\n\nEtiam ac enim non nisl elementum dapibus vel quis augue. Sed vestibulum, lacus vitae ultricies dictum, lacus augue sodales justo, sit amet efficitur purus neque vitae magna. Duis malesuada sagittis tortor, in commodo nisi hendrerit ut. Quisque quis tincidunt odio. Ut cursus enim nec venenatis laoreet. Vestibulum erat diam, egestas vitae scelerisque sed, pulvinar a turpis. Curabitur odio justo, ornare eget tortor eu, commodo condimentum est. Nam dictum, augue tempor dictum porttitor, mi turpis volutpat eros, a tristique metus ipsum nec enim.\"\n\nBut when I add the text, it removes the whitespace between the two paragraphs:\n\n\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur nec metus eget enim egestas rhoncus. Cras id suscipit augue. Mauris dignissim semper ligula, non rhoncus mi sollicitudin sed. In hac habitasse platea dictumst. Maecenas non augue eu augue ultrices commodo a accumsan magna. Sed luctus nulla libero. Ut vitae felis eu nunc porttitor fermentum at porta felis. Curabitur pulvinar, tortor ut gravida facilisis, eros lectus condimentum metus, cursus dapibus sapien lacus vel nisl. Maecenas rutrum nunc eget convallis imperdiet. Fusce felis ex, vehicula placerat erat ut, eleifend consequat dolor. Vestibulum fringilla elementum ante, fringilla luctus elit faucibus eget. Etiam ac enim non nisl elementum dapibus vel quis augue. Sed vestibulum, lacus vitae ultricies dictum, lacus augue sodales justo, sit amet efficitur purus neque vitae magna. Duis malesuada sagittis tortor, in commodo nisi hendrerit ut. Quisque quis tincidunt odio. Ut cursus enim nec venenatis laoreet. Vestibulum erat diam, egestas vitae scelerisque sed, pulvinar a turpis. Curabitur odio justo, ornare eget tortor eu, commodo condimentum est. Nam dictum, augue tempor dictum porttitor, mi turpis volutpat eros, a tristique metus ipsum nec enim');