直接运行程序时收到错误消息,但是当我单击搜索按钮时,它可以正常运行。
错误讯息为Notice: Undefined index no in [...] on line 21
,第21行为$no1 = $_POST['no'];
我该如何解决这个问题?
这是我的完整代码:
<html>
<head>
<title> Searching </title>
</head>
<body>
<form method="POST" action="out.php">
<table border="0" cellpadding="5" cellspacing="0">
<tbody>
<tr>
<td> No </td>
<td>:</td>
<td> <input type="text" name="no"> </td>
<td> <input type="SUBMIT" name="SUBMIT" id="SUBMIT" value="search" >
<?php
include('connect.php');
$no1 = $_POST['no'];
$no = strtoupper($no1);
$query = mysql_query("select no, type, time from park where no = '$no'") or die(mysql_error());
$data = mysql_fetch_array($query);
?>
</td>
</tr>
<tr>
<td>Type</td>
<td>:</td>
<td><input type="text" name="type" maxlength="30" value= "<?php echo $data['type']; ?>" /></td>
</tr>
<tr>
<td>Time</td>
<td>:</td>
<td><input type="text" name="time" maxlength="4" value= "<?php echo $data['time']; ?>" //></td>
</tr>
<tr></tr>
</tbody>
</table>
</form>
</body>
</html>
和截图:
答案 0 :(得分:2)
首先检查天气$_POST['no']
已设置,而不是empty
if(isset($_POST['no']) && !empty(trim($_POST['no']))){
$no1 = $_POST['no'];
$no = strtoupper($no1);
$query = mysql_query("select no, type, time from park where no = '$no'") or die(mysql_error());
$data = mysql_fetch_array($query);
.
.
.
}
?>
警告:您的代码容易受到sql injection的影响而且已弃用mysql_*
函数,因此请使用PDO
或MySQLi
答案 1 :(得分:1)
首次运行时$_POST['no']
未设置,但当您选择搜索按钮时$_POST['no']
已填充。因此,在您的代码中,您应该测试它是否已设置
if (isset($_POST['no'])) {
...
}
答案 2 :(得分:0)
如果未设置数组的索引,则会抛出已发布图像中的错误未定义索引。在这种情况下,错误意味着输入字段no
的值未发布(尚未),因此未设置变量$_POST['no']
。
如果首先检查该变量是否存在,则可以防止发出错误。这可以通过'magical' isset()
函数来完成:
if (isset($_POST['no'])) {
$no1 = $_POST['no'];
}
else {
$no1 = ...
}