0

很简单,我的 MySQL 数据库在提交表单时没有更新。整个文件的代码可以在下面看到,谢谢: 请注意 checkuserlog.php 文件确实包含一个连接到 MySQL 数据库的文件...

<?php
include_once("../scripts/checkuserlog.php");
?>
<?php 
if (!isset($_SESSION['id']) || !isset($_SESSION['username'])){ 
   echo 'Please <a href="../login.php">log in</a> to view';
   exit(); 
}

// set variables
$id = $logOptions_id;
$school = "";
$form_teacher = "";
$room = "";
$success_msg = "";
$error_msg = "";
$errorMsg = "";
$sch_website = "";
$sch_phone = "";
$sch_email = "";
$notes = ""; 
// end variables and begin parsing
if (isset($_POST['parse_var'])){

if ($_POST['parse_var'] == "allstuff"){
    $form_teacher = strip_tags($_POST['form_teacher']);
    $form_teacher = str_replace("'", "&#39;", $form_teacher);
    $form_teacher = str_replace("`", "&#39;", $form_teacher);
    $form_teacher = mysql_real_escape_string($form_teacher);
    $school = strip_tags($_POST['school']);
    $school = str_replace("'", "&#39;", $school);
    $school = str_replace("`", "&#39;", $school);
    $school = mysql_real_escape_string($school);
    $room = strip_tags($_POST['room']);
    $room = str_replace("'", "&#39;", $room);
    $room = str_replace("`", "&#39;", $room);
    $room = mysql_real_escape_string($room);
    $sch_website = strip_tags($_POST['sch_website']);
    $sch_website = str_replace("'", "&#39;", $sch_website);
    $sch_website = str_replace("`", "&#39;", $sch_website);
    $sch_website = mysql_real_escape_string($sch_website); 
    $sch_phone = strip_tags($_POST['sch_phone']);
    $sch_phone = str_replace("'", "&#39;", $sch_phone);
    $sch_phone = str_replace("`", "&#39;", $sch_phone);
    $sch_phone = mysql_real_escape_string($sch_phone);
    $sch_email = strip_tags($_POST['sch_email']);
    $sch_email = str_replace("'", "&#39;", $sch_email);
    $sch_email = str_replace("`", "&#39;", $sch_email);
    $sch_email = mysql_real_escape_string($sch_email); 
    $notes = strip_tags($_POST['pln_notes']);
    $notes = str_replace("'", "&#39;", $notes);
    $notes = str_replace("`", "&#39;", $notes);
    $notes = mysql_real_escape_string($notes);

    $sqlUpdate = mysql_query("UPDATE table SET form_teacher='$form_teacher', school='$school', form_room='$room', sch_website='$sch_website', sch_phone='$sch_phone', sch_email='$sch_email' pln_notes='$notes' WHERE mem_id='$id' LIMIT 1");
    if ($sqlUpdate){
        $success_msg = '<img src="images/round_success.png" width="20" height="20" alt="Success" />We successfully updated your personal information.';
    } else {
        $error_msg = '<img src="images/round_error.png" width="20" height="20" alt="Failure" /> ERROR: Problems arose during the information exchange, please try again later.</font>';
    }
}
}
// end parsing
// get existing data
$sql_default = mysql_query("SELECT * FROM table WHERE mem_id='$id'");

while($row = mysql_fetch_array($sql_default)){ 

    $school = $row["school"];
    $form_teacher = $row["form_teacher"];
    $room = $row["form_room"];  
    $sch_website = $row["sch_website"];
    $sch_phone = $row["sch_phone"];
    $sch_email = $row["sch_email"];
    $notes = $row["pln_notes"];
    $notes = str_replace("<br />", "", $notes);
    $notes = stripslashes($notes);


} 
// end get data
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge;chrome=1">
<title>Edit Your Planner</title>
<link href="../style/main.css" rel="stylesheet" type="text/css" />
<link rel="icon" href="../favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon" />
</head>
<body>
<?php include_once "../header_template.php"; ?>
<div id="maincont">
<h1>Edit your Planner <span style="float:right;margin-right:270px;"><a href="planner.php" class="medium awesome green">View Planner</a></span></h1>
<table border="0" width="950">
<tr><td width="680" valign="top">
<h2><?php echo $success_msg; ?><font color="#FF0000"><?php echo $errorMsg; ?></font></h2>
<table width="100%" border="0">
<tr><td width="50%" valign="top">
<form name="editplanner" method="post" action="planner_edit.php">
<p><strong>School:</strong><br /><input type="text" name="school" id="school" placeholder="What's the name of your school?" value="<?php echo $school; ?>" class="formfield" size="45"></p>
<p><strong>Form Teacher:</strong><br /><input type="text" name="form_teacher" id="form_teacher" value="<?php echo $form_teacher; ?>" placeholder="Who is you form/class teacher?" class="formfield" size="45"></p>
<p><strong>Form Room:</strong><br /><input type="text" name="room" id="room" class="formfield" value="<?php echo $room; ?>" placeholder="Room number or room name" size="45"></p>
<p><strong>School Website:</strong><br /><input type="text" name="sch_website" id="sch_website" class="formfield" value="<?php echo $sch_website; ?>" placeholder="School website URL here" size="45"></p>
<p><strong>Phone:</strong><br /><input type="text" name="sch_phone" id="sch_phone" class="formfield" value="<?php echo $sch_phone; ?>" placeholder="School phone number" size="45"></p>
<p><strong>Email:</strong><br /><input type="text" name="sch_email" id="sch_email" class="formfield" value="<?php echo $sch_email; ?>" placeholder="School email address" size="45"></p>
</td>
<td width="50%" valign="top">
<h2>Notes</h2>
<textarea name="pln_notes" id="pln_notes" placeholder="Add notes to your planner here..." style="width:340px;height:267px;"><?php echo $notes; ?></textarea>
</td></tr></table>
<input name="parse_var" type="hidden" value="allstuff" />
<input type="submit" name="updateBtn2" class="formfield" value="Update!" /></form>
<hr />
</td>
<td width="270" valign="top"><?php include_once "../temps/sidebar.php"; ?>
</td></tr></table>
</div>
<?php include_once "../footer_template.php"; ?>
</body>
</html>
4

4 回答 4

2

您的查询看起来不对,您在 pln_notes= 之前错过了一个逗号,并且更新查询不需要限制 1。

于 2012-04-23T19:42:46.493 回答
0

如果您的 ID 是整数/您在第一个 SQL 查询中的代码,请看一下这个:

$sqlUpdate = mysql_query("UPDATE table SET form_teacher='$form_teacher', school='$school', form_room='$room', sch_website='$sch_website', sch_phone='$sch_phone', sch_email='$sch_email' pln_notes='$notes' WHERE mem_id='$id' LIMIT 1");

不正确(对我来说):

mem_id='$id'

因为如果mem_idInteger请使用:

mem_id=$id

第二个 SQL 查询也是如此:

$sql_default = mysql_query("SELECT * FROM table WHERE mem_id='$id'");

更正如果mem_idInteger

mem_id=$id

希望这能解决您的错误。

于 2012-04-23T19:45:49.840 回答
0

是的,这里的其他答案是正确的。您的更新语句缺少要更新的最后一列的逗号。

但是,为了将来参考,您可以通过使用在查询中实际记录错误的实用函数来跟踪 SQL 查询错误。下面是一个例子。

function db_query($query) {
    $result = mysql_query($query);

    $error_text = mysql_error();

    if ($error_text) {
        trigger_error('SQL ERROR: ' . $error_text, E_USER_WARNING);
    }

    return $result;
}

这应该可以帮助您在将来跟踪与 SQL 相关的错误。

于 2012-04-23T19:48:54.760 回答
0

它看起来不像 $logOptions_id 被设置在任何地方,所以 $id 可能为空

此外,您的更新查询在“sch_email”之后缺少逗号:

$sqlUpdate = mysql_query("UPDATE table SET form_teacher='$form_teacher', school='$school', form_room='$room', sch_website='$sch_website', sch_phone='$sch_phone', sch_email='$sch_email', pln_notes='$notes' WHERE mem_id='$id' LIMIT 1");
于 2012-04-23T19:42:04.850 回答