首页 文章

Php-mysql:谎言的未定义索引[关闭]

提问于
浏览
0

我使用文本框通过POST向数据库发送数据时出错 . 错误是“注意:在线未定义索引”

我怎么解决这个问题 ?

这是我的代码:

<?php
error_reporting(0);
$con = mysql_connect("localhost","root","");

mysql_select_db("hello", $con);

$result = mysql_query("SELECT Max(id) as id from `aoa` WHERE 1");

$row = mysql_fetch_array($result);
  {

    echo $row['id'];
  }

 if($v=="")
{
 $v=1000;

}


$v=$row['id'];

$v=$v+1;
$id=$v;

$sql="INSERT INTO aoa(id,name,clss)
VALUES
('$id','$_POST[name]','$_POST[clss]')";
var_dump($sql);
if (!mysql_query($sql,$con))
  {
   die('Data InsertionError: ' . mysql_error());
  }
echo "Successfully Registered";

mysql_close($con);
?>

(这是我的错误文件)

Notice: C:\wamp\www\Register.php line 31 - Undefined index:  clss
Notice: C:\wamp\www\Register.php line 31 - Undefined index:  name
Notice: C:\wamp\www\Register.php line 17 - Undefined variable: v

3 回答

  • 1

    v未定义的问题就在这一行

    if($v==""){
        $v=1000;
    }
    

    如果未设置$ v,则不是“” . 你可以使用例如

    if( !isset($v) ){
        $v=1000;
    }
    

    另外,使用var_dump()检查您的帖子标志

    var_dump($_POST);
    

    这样你就可以看出你是否设置了'clss'和'name',我怀疑它们不是 .

    你目前的代码也容易受到sql injection的影响,你应该在所有变量上使用mysql_real_escape_string,然后才能在sql中使用它们 .
    甚至更好地使用像PDO这样的东西

  • 0

    这不是错误,而是一个通知 . 您收到它们是因为设置了 error_reporting php.ini 指令 . 您可以在使用前声明变量来消除它 .

  • -1

    你还没有声明你的变量clss,name和v ......在脚本的顶部添加类似的东西

    $_POST['clss'] = null;
    $_POST['name'] = null;
    $v = null;
    

    除此之外,您的代码中也有一些错误 . $ _POST值必须提供单引号或双引号,如$ _POST ['clss']或$ _POST [“name”] . 否则,您的脚本将无法按照您的意图运行 .

    应该这样做 .

相关问题