如何修复特定的PHP白屏错误

时间:2014-02-21 23:11:17

标签: php html mysql while-loop

我知道调试PHP有很多,但我似乎无法弄清楚为什么这段代码不起作用:

<?php
ini_set('display_errors',1); 
error_reporting(E_ALL);

// CONNECT TO MYSQL
$con = mysqli_connect("127.0.0.1","root","MySQLrootpass","cards");
if (mysqli_connect_errno()){
    echo "<div style='text-align: center;'>";
    echo "<h1>Could not connect to server, please try again later.</h1>";
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    echo "</div>";
}

$data = mysqli_query($con,"SELECT * FROM cards");
while($row = mysqli_fetch_array($data)){ ?>
    <div id="card<?php echo $row["id"]; ?>" class="cardPost" style="background-image: url('Sprites/card.png');" onClick="sideData('card','<?php echo $row["id"]; ?>')">
        <span class="cardTitle"><?php echo $row["name"]; ?></span>
        <div class="elements">
            <img class="elmPic" src="Sprites/elms/<?php echo $row["element"]; ?>Elm.png">
        </div>
    </div>
<?php}

// DISCONNECT FORM MYSQL
mysqli_close($con);
?>

我是整个PHP显示错误的新手,所以我不知道为什么没有显示。

在通过语法检查程序运行后,它说while循环结束时的}是意外的,我不明白为什么,因为这段代码工作正常,直到我添加了id和onClick属性到<div>
现在,当我删除它时,它仍然无法正常工作。

另外,我知道这是循环,因为当我发表评论时,一切运作良好 我在页面上还有另一个就像这个(带有id和onClick)工作得很好。

还有一件事,当我在第二个while循环中删除分号(开始隐藏)时,一切都运行良好。

我知道这是一个非常具体的情况,但任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:2)

  

我是整个php显示错误的新手,所以我不知道为什么没有显示

ini_seterror_reporting是函数:与任何其他函数一样,它们在脚本运行时执行。如果你的脚本有一个解析错误,它将永远不会运行,所以你的函数将没有机会做任何事情。

您可以在php.ini文件中更改这些设置,这将允许它们在脚本执行之前生效(然后您将能够看到错误消息)。

display_errors = on
error_reporting = E_ALL
  

在通过语法检查程序运行之后,它说在while循环结束时}}出乎意料,我不明白为什么

<?php}之间应该有空格。

答案 1 :(得分:0)

正如traq所说,问题是<?php}之间的空间(第22行)。看看这个:

<?php
ini_set('display_errors',1); 
error_reporting(E_ALL);

// CONNECT TO MYSQL
$con = mysqli_connect("127.0.0.1","root","","ads");
if (mysqli_connect_errno()){
    echo "<div style='text-align: center;'>";
    echo "<h1>Could not connect to server, please try again later.</h1>";
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    echo "</div>";
}

$data = mysqli_query($con,"SELECT * FROM cards");
while($row = mysqli_fetch_array($data)){ ?>
    <div id="card<?php echo $row["id"]; ?>" class="cardPost" style="background-image: url('Sprites/card.png');" onClick="sideData('card','<?php echo $row["id"]; ?>')">
        <span class="cardTitle"><?php echo $row["name"]; ?></span>
        <div class="elements">
            <img class="elmPic" src="Sprites/elms/<?php echo $row["element"]; ?>Elm.png">
        </div>
    </div>
<?php }

// DISCONNECT FORM MYSQL
mysqli_close($con);
?>

答案 2 :(得分:-1)

尝试

ini_set('display_errors','1');  // value in quotes 

对于特殊的人。访问此链接。 http://php.net/manual/ru/function.ini-set.php

如果不起作用那么。

 <?php  

     phpinfo();  
     /*
     find where is php.ini
     then tell admin to change if you dont have permissions.
    */


 ?>

您也可以尝试error_get_last