我是大二学生,也是我大学这个社区服务组织的新网站管理员。我正在更新一个托管在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;
}
答案 0 :(得分: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)