我不是那么新的HTML,但我我仍然是PHP的新手。现在我已经使用XAMPP创建了一个MySQL数据库,在其中我可以看到我的所有表(如预期的那样)。我有一个PHP脚本,显示我的一个表中的所有信息。该表中包含NULL
个值,因为用户应该在其中输入信息,然后单击一个显示Update
的按钮,并且它应该使用所述值更新我的数据库和表。 (如果上面的任何一个让你感到困惑,希望脚本之后写的内容会澄清它)。这是我的脚本:
注意:dbconnect.php
脚本只包含我与数据库的连接
<?php
require_once('dbconnect.php');
$query = "SELECT * FROM event_list";
$result = mysqli_query($conn, $query);
$count = mysqli_num_rows($result);
?>
<table width="auto" border="1" cellspacing="1" cellpadding="0">
<form name="form1" method="post" action="results.php">
<tr>
<td>
<table width="auto" border="1" cellspacing="1" cellpadding="0">
<tr>
<td align="center"><strong>Event ID</strong></td>
<td align="center"><strong>Title</strong></td>
<td align="center"><strong>Topic</strong></td>
<td align="center"><strong>Description</strong></td>
<td align="center"><strong>Event Date</strong></td>
<td align="center"><strong>Speaker</strong></td>
<td align="center"><strong>Building</strong></td>
<td align="center"><strong>Room</strong></td>
</tr>
<?php
while($rows=mysqli_fetch_array($result)) {
?>
<tr>
<?php
$id[]=$rows['event_id'];
?>
<td align="center">
<?php echo $rows['event_id'];?>
</td>
<td align="center">
<input name="title[]" type="text" id="title" value="<?php echo $rows['title']; ?>">
</td>
<td align="center">
<?php echo $rows['topic_name']; ?>
</td>
<td align="center">
<?php echo $rows['topic_description']; ?>
</td>
<td align="center">
<input name="date[]" type="date" id="date" value="<?php echo $rows['event_date']; ?>">
</td>
<td align="center">
<input name="speaker[]" type="text" id="speaker" value="<?php echo $rows['speaker_name']; ?>">
</td>
<td align="center">
<input name="building[]" type="text" id="building" value="<?php echo $rows['building_name']; ?>">
</td>
<td align="center">
<input name="room[]" type="text" id="room" value="<?php echo $rows['room_name']; ?>">
</td>
</tr>
<?php
}
?>
<tr>
<td colspan="8" align="center"><input type="submit" name="Update" value="UPDATE"></td>
</tr>
</table>
</td>
</tr>
</form>
</table>
index.php
脚本要去的脚本
<?php
require_once('dbconnect.php');
$query = "SELECT * FROM event_list";
$result = mysqli_query($conn, $query);
$count = mysqli_num_rows($result);
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$id = $_POST['event_id']; <!-- variable -->
$title2 = $_POST['title'];
$date2 = $_POST['date'];
$speaker2 = $_POST['speaker'];
$building2 = $_POST['building'];
$room2 = $_POST['room'];
for($i=0;$i<$count;$i++) {
echo "Title: ".$title2[$i]."<br>";
$sql="UPDATE events SET title=$title2[$i], event_date='$date2[$i]', speaker_name='$speaker2[$i]',
building_name='$building2[$i]', room_name='$room2[$i]'
WHERE event_id='$id[$i]'"; <!-- error here -->
$result1=mysqli_query($conn, $sql);
}
}
?>
<table width="auto" border="1" cellspacing="1" cellpadding="0">
<form name="form1" method="post" action="index.php">
<tr>
<td>
<table width="auto" border="1" cellspacing="1" cellpadding="0">
<tr>
<td align="center"><strong>Event ID</strong></td>
<td align="center"><strong>Title</strong></td>
<td align="center"><strong>Topic</strong></td>
<td align="center"><strong>Description</strong></td>
<td align="center"><strong>Event Date</strong></td>
<td align="center"><strong>Speaker</strong></td>
<td align="center"><strong>Building</strong></td>
<td align="center"><strong>Room</strong></td>
</tr>
<?php
while($rows=mysqli_fetch_array($result)) {
?>
<tr>
<td align="center">
<?php echo $rows['event_id'];?>
</td>
<td align="center">
<?php echo $rows['title']; ?>
</td>
<td align="center">
<?php echo $rows['topic_name']; ?>
</td>
<td align="center">
<?php echo $rows['topic_description']; ?>
</td>
<td align="center">
<?php echo $rows['event_date']; ?>
</td>
<td align="center">
<?php echo $rows['speaker_name']; ?>
</td>
<td align="center">
<?php echo $rows['building_name']; ?>
</td>
<td align="center">
<?php echo $rows['room_name']; ?>
</td>
</tr>
<?php
}
?>
<tr>
<td colspan="8" align="center"><input type="submit" name="Return" value="Return"></td>
</tr>
</table>
</td>
</tr>
</form>
</table>
</body>
</html>
当我运行index.php
脚本时,没有在if(isset())
的{{1}}变量周围放置$id
,它告诉我它是results.php
。但是,当我 DO 将Undefined Index
置于其中时,它会告诉我在if(isset())
SQL语句中Update
id
中的WHERE
子句是Undefined Variable
。
就像我之前说过的那样,我对PHP仍然很陌生,我真的可以使用一些帮助。我在这里(Stack)看了一下,发现了一个关于Undefined Index/Variable/Offset
的“线索”,但这对我来说没有意义。
答案 0 :(得分:-1)
在您提交表单时,似乎未发送event_id
。如果您在表单中输出指定event_id
的隐藏字段,则可以在提交表单时通过$_POST
访问该字段:
<input name="event_id" type="hidden" id="event_id" value="<?php echo $rows['event_id']; ?>">
确保此行存在于表单内的某个位置,并且可以通过$_POST['event_id']
在results.php中访问。