[英]Update function does not work properly
在我的 php 代码中,我面临两个问题。 代码如下:
文件名:editevent.php
<?php
$server_name = 'localhost';
$username ='root';
$password ='';
$db_name ='reminder';
$connect_error = 'Sorry, we\'re experiencing connection problems.';
$con = mysql_connect($server_name, $username, $password);
if(!$con){
die($connect_error);
}
mysql_select_db($db_name) or die($connect_error);
?>
<?php
if (isset($_POST['update_event'])) {
$update_query = "UPDATE calendar_event SET send_date = '$_POST[date]', send_time = '$_POST[time]', event_name = '$_POST[event_name]', message = '$_POST[message]', email = '$_POST[email]', phone_no = '$_POST[phone_no]' WHERE id= '$_POST[id]'";
mysql_query($update_query, $con);
}
$sql = "SELECT * FROM calendar_event";
$mydata = mysql_query($sql, $con);
while($record = mysql_fetch_array($mydata)){
?>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Add Event</title>
<link rel="stylesheet" href="css/index.css">
<link rel="stylesheet" href="css/addevent.css">
<link rel="stylesheet" href="css/editevent.css">
</head>
<body>
<form action="editevent.php" method="post">
<ul>
<div class="time_date">
<li class="date">
Date: <br>
<input type="date" name="date" value="<?php echo $record['send_date']; ?>"/>
</li>
<li class="time">
Time: <br>
<input type="time" name="time" value="<?php echo $record['send_time']; ?>"/>
</li>
</div>
<li>
Event Name: <br>
<input type="text" name="event_name" style="width: 285px;" value="<?php echo $record['event_name']; ?>"/>
</li>
<li>
Your Message: <br>
<textarea name="message" style="width: 285px; height: 100px;"><?php echo $record['message']; ?></textarea>
</li>
<div class="email_phoneno">
<li class="email">
Email: <br>
<input type="email" name="email" style="width: 150px;" placeholder="example@email.com" maxlength="30" value="<?php echo $record['email']; ?>">
</li>
<li class="phoneno">
Phone No: <br>
<input type="tel" style="width: 100px;" name="phone_no" value="<?php echo $record['phone_no']; ?>"/>
</li>
</div>
<div class="update_delete_button">
<li class="save_button">
<input type="submit" value="Save event" name="update_event">
</li>
</div>
</ul>
</form>
<li><a href="index.php">home</a></li>
</body>
</html>
<?php
break 1;
}
mysql_close($con);
?>
当我运行此代码时,它显示
***Notice: Undefined index: `id` in `C:\xampp\htdocs\window\editevent.php`
on line 19***
当我避免WHERE
子句时,已更新完整的数据库表。 我该如何解决?
注意: id 是我表中的一个自动递增列。
在表单 TAG 中添加此代码
<input type="id" type="hidden" style="width: 100px;" name="id" value="<?php echo $record['id']; ?>"/>
在从 $_POST 中提取值之前,您应该检查它们是否存在。 您可以为此功能使用isset
函数isset
一旦检查 $_POST 是否正确设置。
使用以下 mysql 查询字符串作为您的解决方案。
$update_query = "UPDATE calendar_event SET send_date = '" . $_POST['date'] . "', send_time = '" . $_POST['time'] . "', event_name = '" . $_POST['event_name'] . "', message ='" . $_POST['message'] . "', email = '" . $_POST['email'] . "', phone_no = '" . $_POST['phone_no'] . "' WHERE id= '" . $_POST['id'] . "'";
如果对此有任何疑问,请告诉我。
您看到此通知是因为 $_POST 中不存在索引“id”。 作为一个经验法则,永远记住:
始终检查 $_REQUEST (POST/GET) 中是否存在该变量,即使用 array_key_exists 函数进行检查。
if(array_key_exists("id",$_POST){ // 代码在这里}
始终检查该变量是否具有值。 isset 函数用于此目的。
if(isset($_POST['id']){ // 代码在这里}
在您的场景中,您的更新表单没有您在更新查询中使用的引用“id”。
您必须在表单关闭之前添加以下 html:
<input type="id" type="hidden" style="width: 100px;" name="id" value="<?php echo $record['id']; ?>"/>
注意:在开发环境中打开所有错误和通知总是一个好习惯。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.