【问题标题】:PHP returning a blank page after executing the scriptPHP在执行脚本后返回一个空白页
【发布时间】:2015-12-12 20:55:07
【问题描述】:

正如你们大多数人所说,这段代码运行良好。我对指向这个脚本的路径有一点问题。现在的问题是我在使用 href 代码行的超链接时遇到问题。我的数据库中有一个标记为 fulltext 的字段。我正在尝试创建一个脚本,当我单击“阅读更多”按钮时,该脚本允许我显示全文 (echo "{$row['fulltext']}.";) 的内容。超链接应填充echo "{$row['title']}."; 我通过插入 a href="fulltext.php?=$row['fulltext'] 犯了什么错误

<table>
<?php
    $dbhost = 'localhost';
    $dbuser = 'myusernm';
    $dbpass = 'mypwd';

    $conn = mysql_connect($dbhost, $dbuser, $dbpass);

    if(! $conn )
    {
        die('Could not connect: ' . mysql_error());
    }

    $sql = 'SELECT title, introtext, created, created_by, catid FROM      mydb_items';
    mysql_select_db('muslimtimes360');
    $retval = mysql_query( $sql, $conn );

    if(! $retval )
    {
        die('Could not get data: ' . mysql_error());
    }

    while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
    {
        echo '<tr>'; echo '<td>'; echo '<span class="post-date">'; echo   "{$row['created']}."; echo '</span>'; echo '</td>'; echo '</tr>';
        echo '<tr>';
        echo '<td>'; echo '<h2 class="blog-post-title">'; echo "{$row['title']}."; echo '</h2>'; echo '</td>';
        echo '</tr>';
        echo '<tr>';
        echo '<td>'; echo '<p>'; echo "{$row['introtext']}."; echo '</p>'; echo '</td>'; echo '</tr>';

        echo '<p>'; echo '<tr>';
        echo '<td>'; echo '<a href="#">'; echo '<input type="button" value="Read More" />'; echo '</a>'; echo '</td>';
        echo '</tr>';
        echo '</div>';
        echo '<div class="blog-meta">';
        echo '<img src="img/avatar.png" alt="Avatar" />';
        echo '<tr>'; echo '<td>'; echo '<h4 class="blog-meta-author">'; echo "{$row['created_by']}."; '</h4>';
        echo '<span>'; echo 'Category:'; echo "{$row['catid']}."; echo '</span>'; echo '</td>'; echo '</tr>';
        echo '</table>';
    }

    echo "";

    mysql_close($conn);
?>

【问题讨论】:

  • 请正确格式化您的代码,它是一团糟。
  • 您检查过任何语法错误吗?如果不是那么请先检查一下,然后检查内容是否真的没有出现。我的意思是,有时我们将文本颜色设置为与背景颜色相同,我们无法看到内容,如果可能的话分享您的 css。
  • 你真的应该使用 MySQLi 或 PDO,从 PHP 5.5.0 开始不推荐使用 MySQL。看看stackoverflow.com/questions/8891443/…stackoverflow.com/questions/13569/…
  • 如果您没有得到任何结果,那么很可能while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) 没有任何数据可供查看,这意味着您的查询没有返回任何结果。
  • 我在本地机器及其工作文件中运行此代码。这可能是您的 mysql 版本问题,所以请您先检查一下在 phpmyadmin 上运行此查询(SELECT title, introtext, created, created_by, catid FROM mydb_items)吗?

标签: php html mysql css sql


【解决方案1】:

我尝试仅使用调整后的连接凭据和表/列名称来运行您的代码,它运行良好(使用 php 5.5 和 php 5.3)。

数据库中不可能没有记录吗?另一种可能是一些错字。

编辑:您也只有一个table 开始标签,而结束标签与存在的记录一样多。尝试检查“空白页”的源代码。

Edit2:尝试运行这个 sn-p 而不是你以前的代码,让我们知道会发生什么:

<?php
    // connection string constants
    define('DSN', 'mysql:dbname=muslimtimes360;host=localhost');
    define('USER', 'myusernm');
    define('PASSWORD', 'mypwd');

    // pdo instance creation
    $pdo = new PDO(DSN, USER, PASSWORD);

    // query preparation
    $stmt = $pdo->query("
        SELECT title, introtext, created, created_by, catid
        FROM mydb_items
    ");

    // fetching results
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // if this returns 0 then it means no records are present
    echo count($result) . "\n";

    // the loop should print valid table
    foreach ($result as $index => $row) {
        if ($index == 0) echo '<table>';
        echo <<<HTM
<tr>
    <td>
        <span class="post-date">{$row['created']}</span>
    </td>
</tr>
<tr>
    <td>
        <h2 class="blog-post-title">{$row['title']}</h2>
    </td>
</tr>
<tr>
    <td>
        <p>
            {$row['introtext']}
        </p>
    </td>
</tr>

<tr>
    <td>
        <p>
            <a href="#"><input type="button" value="Read More" /></a>
        </p>
    </td>
</tr>
<tr>
    <td>
        <div class="blog-meta">
            <img src="img/avatar.png" alt="Avatar" />
            <h4 class="blog-meta-author">{$row['created_by']}</h4>
            <span>Category: {$row['catid']}</span>
        </div>
    </td>
</tr>
HTM;
        if ($index == (count($result)-1)) echo '</table>';
    }

【讨论】:

  • 我使用的是 php 5.4。这可能是问题吗?我也在这里尝试了一些建议,但似乎都没有。
  • @nick PHP 版本在这种情况下应该无关紧要。您可以尝试的另一件事是在脚本顶部设置error_reporting(-1);。也许会出现一些有用的提示。
  • 我意识到我的问题是我的 html 中的 php 包含没有指向 PHP 脚本来检索 mysql 数据。现在一切正常。
  • @nick:我很高兴听到这个消息:)
【解决方案2】:

尝试删除第一行表并放入里面

例子

while($row = mysql_fetch_array($retval))
    {
     echo '<table>';

【讨论】:

    【解决方案3】:

    请注意mysql_fetch_array只需要数据(数组),不需要给MYSQL_ASSOC,Cz你的冲突MySQLMySQLi

    警告 此扩展在 PHP 5.5.0 中被弃用,并在 PHP 7.0.0 中被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。

    改一下

    while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
    

    到这里

    while($row = mysql_fetch_array($retval))
    

    在里面,而只是使用

    echo  $row['created'];
    

    这样不用echo "{$row['created']}.";

    【讨论】:

      【解决方案4】:

      您正在使用旧的 Mysql 语法,该语法自 PHP 5.5.0 起已弃用,自 PHP 7.0.0 起已被删除。 如果您使用的是最新版本的 PHP,那么您的代码将无法运行。请更改相应的语法并重试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-31
        • 1970-01-01
        • 2015-11-18
        • 2014-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多