PHP第一次打开时出错

时间:2012-12-03 12:12:12

标签: php html mysql

直接运行程序时收到错误消息,但是当我单击搜索按钮时,它可以正常运行。

错误讯息为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>

和截图:

enter image description here

3 个答案:

答案 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_*函数,因此请使用PDOMySQLi

答案 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 = ...
}