提交POST数据时的PHP白屏

时间:2014-01-01 16:10:24

标签: php mysql

我正在编写一个执行以下操作的PHP脚本:

  • 接受来自文章编辑页面的传入POST数据。
  • 检查上一页的下拉列表是否设置为“创建新文件夹”。
  • 如果是这样,它会检查名为foldercreate的文本框中是否有东西。
  • 如果是,则将其插入数据库。
  • 如果没有,它会在数据库中创建一个Miscellaneous文件夹并在插入中使用它。

问题是,当我点击上一页的表单提交按钮时,我一直看到白屏。它在地址栏中显示savearticle.php,但没有其他内容。它甚至不会打印出错误消息。我现在必须重写这个大约三次,所以请原谅代码中的任何逻辑错误,但它应该尽我所能。我只是想确保它在目前的形式下工作,然后再继续。

我觉得整个代码中的echo语句对于过去的调试很有用,但它不会显示一个。

在functions.php中,我只使用数据库连接信息,因为我在多个页面中使用它而没有问题。

任何帮助都会受到赞赏,因为这非常令人沮丧。

<?php
echo "start of file";
include_once 'functions.php';
echo "after include";
$title          = $_POST[ 'title' ];
$body           = $_POST[ 'body' ];
$folderselect   = $_POST[ 'folderselect' ];
$foldercreate   = $_POST[ 'foldercreate' ];
$newfolderflag  = 99;
echo "after variables";
if ($folderselect === "Create New Folder") {
    $folder = $foldercreate;
    $newfolderflag = 0; 
    } else if ($foldercreate == NULL && $folderselect === "Create New Folder"){
    $folder = "misc";
    echo "Nothing selected. Putting in Miscellaneous folder.\n\n";
    $newfolderflag = 0;
    } else {
        $folder = $folderselect;
        }

if ($newfolderflag === 0) {
    $query = "INSERT INTO folder ('name') VALUES ('$folder');";
    if (mysqli_query($db, $query) == TRUE) { echo "New folder created successfully!\n\n"};
}
echo "after if statements";
$query = "SELECT 'folderID' FROM folder WHERE name = $folder;";
$result = mysqli_query($db, $query);
$row = array();
$row = mysqli_fetch_array($result);
$folder = $row['0'];

$query  = "INSERT INTO article ( title, body, folderID, userID ) VALUES ('$title', '$body', '$folder', '$user');";
if (mysqli_query($db, $query) === TRUE) {
    echo "Article Saved!\r";
    echo "<a href="write.php">Back</a>";
    }
echo "after database stuff";

?>

3 个答案:

答案 0 :(得分:1)

您需要更改您的选择,以便用引号括起$folder

$query = "SELECT 'folderID' FROM folder WHERE name = '$folder';";

答案 1 :(得分:0)

while屏幕表示解析时发生致命错误(这几乎总是意味着语法错误,例如缺少分号)。将以下行添加到脚本的顶部,看看错误是什么。

ini_set('display_errors', 1);

此外,使用颜色代码的IDE(如NetBeans)可以通过突出显示语法问题来极大地帮助您。

答案 2 :(得分:0)

首先,错误报告和显示应该在您的开发环境中一直提升。在你的php.ini中,你应该有以下内容:

error_reporting = -1
display_errors = 1
display_startup_errors = 1

您可以在脚本中重新创建这些设置,仅用于调试,方法是在当前脚本的顶部添加以下内容(必须在调试后删除):

error_reporting(-1);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

现在再试一次。如果仍然没有得到任何结果,请将第一个调试echo替换为die()语句。我通常使用die('wtf?');。如果页面上显示wtf?,则将其剪切并粘贴到页面的下方。继续,直到白屏重新出现,你发现了问题。

祝你好运!