更新php表中的数据时出现空白屏幕

时间:2013-09-04 18:31:16

标签: php mysql html5 mysqli

我一直致力于一个项目,我正处于项目的最后阶段。我的问题是每当我尝试更新数据库表中的数据时返回一个没有错误消息的空白屏幕。请在下面找到php脚本和html表单(负责更新数据库表的表单),我将其分为大约四个部分:

提前致谢

更新表单

<a name="inventoryEditForm" id="inventoryEditForm"></a>
<h3>&darr;Add New Question Form&darr;</h3>  
<form action="inventory_edit.php" enctype="multipart/from-data" name="myForm" id="myForm" method="post">
    <table width="80%" border="0" cellspacing="3" cellpadding="7">
        <tr>
            <td width="20%">&nbsp;</td>
            <td width="80%">&nbsp;</td>
        </tr>
        <tr>
            <td>Question</td>
            <td><textarea rows="" name="question" cols=""><?php echo $question; ?></textarea></td>
        </tr>
        <tr>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td>Venue</td>
            <td><input type="text" name="venue" maxlength="50" value="<?php echo $venue; ?>"></td>
        </tr>
        <tr>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td>Date</td>
            <td><input type="date" name="questiondate" value="<?php echo $date; ?>"></td>
        </tr>
    </table>
    <br>
    <input name="thisID" type="hidden" value="<?php echo $targetID; ?>"/>
    <input type="submit" name="submit" value="Update Question">
    <input type="reset" name="clear" value="Clear Form">
</form>

PHP脚本:

<?php

//Error reporting due to long script
error_reporting(E_ALL);
ini_set('display_errors', '1');
?>
<?php

error_reporting(E_PARSE);
//Update question table
If (isset($_POST['question'])) {
    $id = mysqli_real_escape_string($link, $_POST['thisID']);
    $question = mysqli_real_escape_string($link, $_POST['question']);
    $venue = mysqli_real_escape_string($link, $_POST['venue']);
    $date = mysqli_real_escape_string($link, $_POST['questiondate']);
    //Update question in the table
    $sql = mysqli_query($link, "UPDATE DebateQuestion SET question='$question',venue='$venue',date='$date' WHERE qQuestionNo='$id'LIMIT 1") or die(mysql_error());
    header("location: inventory.php");
    exit();
}
?>
<?php

error_reporting(E_PARSE);
//Gather this questions full information and insert automatically into the edit form
if (isset($_GET['qid'])) {
    $targetID = $_GET['qid'];
    $sql = mysqli_query($link, "SELECT * FROM DebateQuestion WHERE qQuestionNo='$targetID'LIMIT 1") or die(mysql_error());
    $questionCount = mysqli_num_rows($sql); // count the output amount

    if ($questionCount > 0) {
        while ($row = mysqli_fetch_array($sql, MYSQLI_ASSOC)) {
            $id = $row["qQuestionNo"];
            $question = $row["qQuestion"];
            $venue = $row["qDebateVenue"];
            $date = strftime("%b %d, %Y", strtotime($row["qDate"]));
        }
    } else {
        echo "Oops, no questions like that exists. Check <a href='inventory.php'>inventory</a>again";
        exit();
    }
}
?>

3 个答案:

答案 0 :(得分:0)

在你的更新查询中你有数据列而没有使用`back ticks,date也是一个mysql的函数,如果你不确定它们是否与mysql的保留关键字冲突,请尝试用后面的刻度包装你的列名

$sql = mysqli_query($link,"UPDATE DebateQuestion SET 
`question`='$question',`venue`='$venue',`date`='$date' 
 WHERE qQuestionNo='$id'LIMIT 1")

答案 1 :(得分:0)

"SELECT * FROM DebateQuestion WHERE qQuestionNo='$targetID'LIMIT 1"

这是qQuestionNo列的字符串类型?如果不删除$targetID周围的引号。

答案 2 :(得分:0)

注意:我没有测试过代码 - 只需在屏幕上阅读。

我以前从未见过IF语句大写:

If (isset($_POST['question'])) {

我猜这会产生影响。

你的文件中还有很多其他奇怪的东西,但没有一个可以给你白屏。首先在if语句中尝试使用小写的“我”。

另外 - re:UPDATE语句,你错过了$ id和LIMIT之间的空格:

**qQuestionNo='$id'LIMIT 1**