0

我一直在做一个项目,我正处于项目的最后阶段。我的问题是每当我尝试将我的数据库表中的数据更新为返回一个没有错误消息的空白屏幕时。请在下面找到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();
    }
}
?>
4

3 回答 3

0

在您的更新查询中,您有数据列而不使用`反引号,日期也是mysql的功能如果您不确定它们是否与mysql的保留关键字冲突,请尝试用反引号包裹您的列名

$sql = mysqli_query($link,"UPDATE DebateQuestion SET 
`question`='$question',`venue`='$venue',`date`='$date' 
 WHERE qQuestionNo='$id'LIMIT 1")
于 2013-09-04T18:37:48.513 回答
0
"SELECT * FROM DebateQuestion WHERE qQuestionNo='$targetID'LIMIT 1"

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

于 2013-09-04T18:42:19.227 回答
0

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

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

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

不过,我想这会有所不同。

您的文件中还有许多其他奇怪的事情,但没有一个应该给您白屏。首先在 if 语句中尝试小写“I”。

ALSO - re: UPDATE 语句,你在 $id 和 LIMIT 之间缺少一个空格:

**qQuestionNo='$id'LIMIT 1**
于 2013-09-04T18:43:55.617 回答