【问题标题】:can´t fetch data from db and print it within css and html无法从 db 获取数据并在 css 和 html 中打印
【发布时间】:2011-08-22 20:12:35
【问题描述】:

我正在尝试从以下数据库数据中获取数据:

并使用此 CSS 和 HTML 代码显示数据:

    <div class="event">
        <img src="http://dummyimage.com/80x70/f00/fff.png" alt="picture" />  
        <p>Room 2</p>
        <p class="patient-name">Jon Harris</p>
        <p class="event-text">This is a pixel. A flying pixel!</p>
        <p class="event-timestamp">feb 2 2011 - 23:01</p>
    </div>

.event {  
    display:block;  
    background: #ececec;  
    width:380px;  
    padding:10px;  
    margin:10px;  
    overflow:hidden;  
    text-align: left;
}  
.event img {
    display:block;
    float:left;
    margin-right:10px;
}  

.event p {  
    font-weight: bold;
}

.event img + p {
    display:inline;
}

.patient-name {
    display:inline;
    color: #999999;
    font-size: 9px;
    line-height:inherit;
    padding-left: 5px;
}
.event-text{
    color: #999999;
    font-size: 12px;
    padding-left: 5px;
}
.event-timestamp{
    color: #000;
    padding-left: 5px;
    font-size: 9px;
}

这是我的 PHP 代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>DASHBOARD - Arduino 3</title>
  <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
    <?php
    $con = mysql_connect("localhost","*****","***");
        if(!con)
        {
            die('Could not connect: ' . mysql_error());
        }

        mysql_select_db("arduino_db",$con);

        $result = mysql_query("SELECT * FROM events");
        //Start container
        echo " <div id='background_container'> ";

        while($row = mysql_fetch_array($result))
        {
            echo "<div class='event'>";
            echo "<img src='img/ev_img/red.jpg' alt='picture' />";
            echo "<p>" . $row['inneboende'] . "</p>";
            echo "<p class='patient-name'>" . "$row['overvakare']" . "</p>";
            echo "<p class='event-text'>" . "$row['handelse']" . "</p>";
            echo "<p class='event-timestamp'>" . "$row['tid']" . "</p>";
            echo "</div>";
        }

        //end container
        echo "</div>"
        mysql_close($con);

    ?>
</body>
</html>

我得到的只是一个空白页,我不明白为什么。

【问题讨论】:

  • 如果你得到一个空白页面,要么是 mysql 错误,要么是 php 错误被抑制,你可能想看看 error_reporting 尝试添加 error_reporting(E_ALL);在顶部并在底部回显 mysql_error()。
  • 永远不要在任何论坛或 stackoverflow 中发布您的真实 IP、真实用户名、真实密码、真实的任何内容。我建议你更改密码,如果你不知道如何查看这个链接cyberciti.biz/faq/mysql-change-user-password
  • 问题不在于 mySQL,而在于我编写的 php 代码的语法,我尝试使用常规 html 标签打印它并且它工作正常。

标签: php mysql html css


【解决方案1】:

您在这里缺少分号(我添加了它):

//end container
echo "</div>";

您应该删除这些行中 $row 数组变量周围的引号,如下所示:

echo "<p class='patient-name'>" . $row['overvakare'] . "</p>";
echo "<p class='event-text'>" . $row['handelse'] . "</p>";
echo "<p class='event-timestamp'>" . $row['tid'] . "</p>";

通过这些更改,它可以工作(我测试过)。

我想这是您发布实际连接详细信息的一个好处:)

正如 cmets 中所述,您现在应该绝对更改您的密码。


另外,在开发过程中,您应该确保启用了错误报告,see this answer 有多种方法可以做到这一点。

【讨论】:

  • 同意,如果有引号,它只会打印出 $row['xxxxxxxx'],而不是得到它的值
  • @bmbaeb - 错误,它尝试解析 $row 并且 ' 将其丢弃,因为它已经在字符串中。 $row[xxxxxxxx] 是正确的字符串嵌入变量替代。
  • 非常感谢三十点,我喜欢这个地方。好吧,我喜欢以 OO(面向对象)的方式编写我的代码.. 关于我如何构建它的任何提示?
  • 确保您阅读了我的答案的编辑。为了方便更改,您可以切换到mysqli(或PDO)。 mysql_connect 和朋友比较过时。
【解决方案2】:
  1. row['overvakare']$row['handelse']$row['tid'] 不应用双引号引起来。由于它们是该字符串中的唯一变量,因此只需删除封闭的双引号即可。
  2. echo "&lt;/div&gt;" 最后需要 ;

脚本在修复这些错误后执行(并显示数据)。

【讨论】:

    【解决方案3】:

    一些事情:

    如果mysql_query 失败,您的循环将不会进入

    您正在使用mysql_fetch_array,但尝试作为关联数组进行访问。你要mysql_fetch_assoc

    从安全的角度来看,您不应将数据库值原样回显,就好像它们是从用户输入中获得的一样。这可能会导致诸如 xss 注入之类的令人讨厌的事情。确保使用strip_tags 和其他过滤功能以确保安全。

    【讨论】:

      猜你喜欢
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多