我知道有很多关于调试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>
之前,这段代码都能正常工作。现在,当我删除它们时,它仍然不起作用。
另外,我知道这是while循环,因为当我对其进行注释时,一切都很好。
我在页面上也有另一个类似的东西(带有id和onClick),效果很好。
还有一件事,当我在第二个while循环中删除分号(开始时是隐藏的)时,所有命令仍然运行良好。
我知道这是一个非常具体的情况,但是任何帮助将不胜感激。
最佳答案
我是整个php显示错误的新手,所以我不知道为什么不显示ini_set
和error_reporting
是函数:与其他任何函数一样,它们在脚本运行时执行。如果您的脚本有解析错误,则它将永远不会运行,因此您的函数将没有机会做任何事情。
您可以改为在php.ini文件中更改这些设置,这将使它们在脚本执行之前生效(然后您将可以看到错误消息)。
display_errors = on
error_reporting = E_ALL
通过语法检查器运行它后,它说while循环末尾的}是意外的,我不明白为什么
<?php
和}
之间应该有空格。
关于php - 如何修复特定的PHP白屏错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947044/