【发布时间】:2020-04-08 12:28:23
【问题描述】:
我是一名大二学生,是我所在大学这个社区服务组织的新网站管理员。我正在更新一个托管在 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;
}
【问题讨论】:
-
三重检查您的用户名、密码和 dbame。
-
尝试在mysql中手动运行
commit。记录有时不会反映回来 -
你还在用
mysql_query