下面这段代码录入数据正常,但是总会提示这个错误:Notice: Undefined index: ok in D:\www\abc\insert.php on line 2
这是什么原因?请说说具体解决办法。谢谢。
<?php
 if ($_POST["ok"]){
  $link_id = mysql_connect("localhost", "root", "")
            or die ("连接失败");
  if($link_id){
  mysql_select_db("my_test");
  $sql = "insert into userinfo values ($_POST[id],$_POST[name]," .
  "$_POST[gender],$_POST[age],$_POST[regdate])";
  $result = mysql_query($sql);
  if($result){
  echo "记录已经成功录入<br><a href='insert.php'>继续录入数据</a>";
 
  }else
  echo "录入数据失败";
 
  mysql_close($link_id);
 
  }
 }
 
 else{
  ?>
  <form action="insert.php" method="POST">
  编号<input type="text" name="id" /><br>
  姓名<input type="text" name="name" /><br>
    性别<input type="text" name="gender" /><br>
    年龄<input type="text" name="age" /><br>
    注册时间<input type="text" name="regdate" /><br>
    <input type="submit" name="ok" value="value"/>
        </form>
        
        <?
  
  }
 
?>

解决方案 »

  1.   

    不是错 
    修改php.ini配置文件,error_reporting = E_ALL & ~E_NOTICE
      

  2.   

    只是一个警告,不影响运行,除了楼上的方法,你还可以:1.error_reporting(E_ERROR);
    让系统只显示错误
    2.把使用数组的地方,先用isset判断一下,比如:
    if ($_POST["ok"]){
    改成
    if (isset($_POST["ok"])&&$_POST["ok"]){
    不过这个方法比较麻烦
      

  3.   

    if ($_POST["ok"]){
    改为
    if ($_SERVER['REQUEST_METHOD'] == "POST"){
    就强壮了当 E_NOTICE 警告没有被屏蔽时,读取尚未定义的变量时就会发出 Notice: Undefined ....
    的警告信息。
    通常这不算错误,但有时也会影响到程序的正确执行
      

  4.   

    一个善意的提示 if ($_POST["ok"]){可以修改成if (isset($_POST["ok"])){do
      

  5.   

    if (isset($_POST["ok"])){
         //do somthing..
    }