【问题标题】:Try to display data from database in web, but some records have not been shown尝试在网页中显示数据库中的数据,但有些记录没有显示
【发布时间】:2017-10-02 09:32:47
【问题描述】:

我是做网站开发的初学者。我已经通过 phpMyAdmin 将一些数据插入到数据库中。这是数据库:

这些是我在 web 中生成表格的代码。

<table border = "1" cellpadding = "5" cellspacing = "0">
    <tr style="text-align: left;">
        <th style="width : 150px;">pmID</th>
        <th style="width : 150px;">pubYear</th>
        <th style="width : 150px;">pubMonth</th>
        <th style="width : 150px;">pubDay</th>
        <th style="width : 150px;">pubTitle</th>
        <th style="width : 150px;">articleTitle</th>
        <th style="width : 300px;">abstract</th>
    </tr>
    
    
    <?php
    while($row = $result -> fetch_object()){
        $pmID = htmlentities($row->pmID, ENT_QUOTES, "UTF-8");
        $pubYear = htmlentities($row->pubYear, ENT_QUOTES, "UTF-8");
        $pubMonth = htmlentities($row->pubMonth, ENT_QUOTES, "UTF-8");
        $pubDay = htmlentities($row->pubDay, ENT_QUOTES, "UTF-8");
        $pubTitle = htmlentities($row->pubTitle, ENT_QUOTES, "UTF-8");
        $articleTitle = htmlentities($row->articleTitle, ENT_QUOTES, "UTF-8");
        $abstract = htmlentities($row->abstract, ENT_QUOTES, "UTF-8");
        
    ?>
    
        <tr>
            <td><?php echo $pmI;?></td>
            <td><?php echo $pubYear;?></td>
            <td><?php echo $pubMonth;?></td>
            <td><?php echo $pubDay;?></td>
            <td><?php echo $pubTitle;?></td>
            <td><?php echo $articleTitle;?></td>
            <td><?php echo $abstract;?></td>    
        </tr>
    
    <?php
    }
    ?>

结果:

注意到有些列是空的。我不知道如何解决它。

【问题讨论】:

  • 虽然我不明白为什么,但您的问题似乎与您使用 htmlentities 有关,丢失的案例要么有一个类似 HTML 的标签 (&lt;sup&gt;) 要么有一个撇号 (@987654326 @)。在htmlentities 中运行它们之前,请尝试var_dump($row) 并查看是否获得了正确的值。
  • 只是为了快速检查,从您获得空行的字段中删除 ENT_QUOTES, "UTF-8" 并尝试打印它。

标签: php html


【解决方案1】:

数据库中的特殊字符可能导致它。我的建议,尽量避免使用任何特殊字符并将其替换为普通字符。希望对您有所帮助。

【讨论】:

  • 谢谢~这些特殊字符无法避免,我应该怎么做才能将它们加载到数据库中?
【解决方案2】:

使用foreach循环数据

<?php
    foreach ($result as $row) {
?>
      <tr>
        <td><?php echo $row->pmI;?></td>
        <td><?php echo $row->pubYear;?></td>
        <td><?php echo $row->pubMonth;?></td>
        <td><?php echo $row->pubDay;?></td>
        <td><?php echo $row->pubTitle;?></td>
        <td><?php echo $row->articleTitle;?></td>
        <td><?php echo $row->abstract;?></td>    
      </tr>
<?php
    }
?>

希望对你有帮助

【讨论】:

    【解决方案3】:

    您必须验证从数据库到 htmlentities 方法提供的字符串是否为 UTF-8。

    【讨论】:

      【解决方案4】:

      您可以通过多种方式解决它,我认为您应该阅读When Should One Use HTML Entities。 现在你可能的解决方案是

      1. 将源文件另存为 UTf-8
      2. 字符串以 UTF-8 格式提供。

      您还可以使用 echo 和 print 打印变量。 也不要在数据库中存储特殊字符。

      如果你想删除特殊字符试试这个函数$string = preg_replace('/[\x00-\x1F\x7F]/u', '', $string);

      【讨论】:

      • 谢谢~我无法删除或不存储这些特殊字符,我该如何解决这些问题?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 2016-09-03
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 2016-10-21
      相关资源
      最近更新 更多