LAMP堆栈无法正确地从mysql数据库读取,但是不能正确插入。函数“成功”,没有错误,但数据库未更新

问题描述 投票:-1回答:1

我是大二学生,也是我大学这个社区服务组织的新网站管理员。我正在更新一个托管在InMotion上的10-15年历史的网站,目前正在将其移至我在AWS上配置并设置的LAMP堆栈中,并逐步重建该网站的结构。到目前为止,除了不能正确添加到数据库之外,我都可以正常工作。从数据库读取和显示表格页面都可以,但是我不确定插入函数出了什么问题。我已经尝试了一切,但是一切对我来说似乎都是正确的...

添加公告时,只要所有检查都通过,就进入“公告添加成功页面”

[注意,托管在InMotion上的网站的PHP版本是版本5,在制作AWS LAMP堆栈时,我将其更新为7.2。为了解决mysql和regex的过时问题,我导入了一些在github上发现的包装器,以修复该问题(允许我正确地从数据库中读取)。

这里是相关代码块。我认为我已经正确排列了它们,它们对我来说看起来正确。

<!-- IN add_announcement.php -->
            <h2>Add an Announcement</h2>
            <?php
            if (isset($_SESSION['addannouncement'])) {
                unset($_SESSION['addannouncement']);
                echo ("\t\t\t<p>Announcement added successfully!</p>\n");
            } else {
            ?>
            <form action="process.php" method="post">
                <fieldset>
                    <legend>Add Announcement</legend>
                    <?php
                    if ($form->num_errors > 0) {
                        echo ("\t\t\t\t\t<p style=\"font-weight:bold;color:#f00;\">".$form->num_errors." error(s) found</p>\n");
                    }
                    ?>

                    /* ol and li stuff for forms*/
                    ...

                    <input type="hidden" id="subaddannouncement" name="subaddannouncement" value="1" />
                </fieldset>
                <input type="submit" value="Submit" />
            </form>
<!-- IN process.php, WITHIN AN IF LOOP-->
    /* User submitted add announcement form */
    else if (isset($_POST['subaddannouncement'])) {
        $this->procAddAnnouncement();
    }
<!-- IN process.php -->
    /*
     * procAddAnnouncement - Validates and processes requests to add an announcement to the database
     */
    function procAddAnnouncement()
    {
        global $session, $form;

        /* Announcement add attempt */
        $retval = $session->addAnnouncement($_POST['txt_Title'], $_POST['txtarea_Body']);

        file_put_contents('php://stderr', print_r("ERROR DEBUG: retval is " . $retval, TRUE));

        /* Announcement Add Successful */
        if ($retval == 0) {
            $_SESSION['addannouncement'] = true;
            header("Location: " . $session->referrer);
        }
        /* Error found with form */
        else if ($retval == 1) {
            $_SESSION['value_array'] = $_POST;
            $_SESSION['error_array'] = $form->getErrorArray();
            header("Location: " . $session->referrer);
        }
        /* Announcement add attempt failed */
        else if ($retval == 2) {
            $_SESSION['addannouncement'] = false;
            header("Location: " . $session->referrer);
        }
    }

<!-- IN session.php function addAnnouncement($subtitle, $subbody)-->
    function addAnnouncement($subtitle, $subbody)
    {
        global $database, $form;

        /* Announcement Title Error Checking */
        ...

        /* Announcement Body Error Checking */
        ...

        /* Set Announcement Post Date */
        ...

        /* Errors exist, have user correct them */
        if ($form->num_errors > 0) {
            return 1; // Errors with form
        }
        /* No errors, add the new announcement to the database */
        else {
            if ($database->addNewAnnouncement($subtitle,$subbody,$subtime)) {
                return 0; //Event signup added succesfully
            } else {
                return 2; //Event signup attempt failed
            }
        }
    }
<!-- IN database.php -->
    /**
     * addNewAnnouncement - Inserts announcement title, body, and post date into the database
     */
    function addNewAnnouncement($title, $body, $date)
    {
        $q = "INSERT INTO `" . TBL_ANNOUNCEMENTS . "` VALUES ('','$title','$date','$body')";
        $result = mysql_query($q, $this->connection);
        return $result;
    }

IMAGE OF Directory Structure for reference

php mysql mysqli lamp
1个回答
1
投票

在您的database.php中,您仍在使用mysql_query。

mysql_query在PHP 5.5.0中已弃用,在PHP 7.0.0(https://www.php.net/manual/en/function.mysql-query.php)中已删除。由于您使用的是7.2,因此无法使用。

改为使用mysqli_query

注意:使用mysqli_query,参数顺序已更改。

mysqli_query($connection, $query)

vs

mysql_query($query, $connection)
© www.soinside.com 2019 - 2024. All rights reserved.