2015-09-03 127 views
-4

这里是PHP代码的连接:PHP。未定义指数

<?php 

    $con=mysql_connect("127.0.0.1", "root", ""); 
    mysql_select_db("society"); 
    if(!$con) 
    { 
    echo "Failed to Connect to MySql".mysqli_connect_error(); 
    } 
    else 
    { 
    echo"success"; 
    } 

    $query="INSERT INTO users (fname, lname, email, password) 
         VALUES('".$_POST['fname']."','".$_POST['lname']."','".$_POST['email']."','".$_POST['password']."')"; 
    mysql_query($query,$con); 

?> 

这是错误。试过了,但我不能够解决这个错误:

Notice: Undefined index: fname in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\html\connect.php on line 13

Notice: Undefined index: lname in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\html\connect.php on line 13

Notice: Undefined index: email in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\html\connect.php on line 13

Notice: Undefined index: password in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\scripts\html\connect.php on line 13

+0

WHere是你的形式??? – Saty

+2

你的'POST'数据来自哪里?并警告你,'mysql_ *'API已经[弃用](http://php.net/manual/en/migration55.deprecated.php)。 –

+0

从一个HTML表格 –

回答

0

试试这个

<?php 

    $con=mysql_connect("127.0.0.1", "root", ""); 
    mysql_select_db("society"); 
    if(!$con) 
    { 
    echo "Failed to Connect to MySql".mysql_connect_error(); 
    } 
else 
{ 
echo"success"; 
} 
if(isset($_POST['fname']) && isset($_POST['lname']) && isset($_POST['email'])) { 
$query="INSERT INTO users (fname, lname, email, password) 
        VALUES('".$_POST['fname']."','".$_POST['lname']."','".$_POST['email']."','".$_POST['password']."')"; 
    mysql_query($query,$con); 
    } 

>

+0

不推荐使用mysql_ *扩展名。缺少SQL注入预防。如果参数丢失(即静默失败),则不进行repsonse。 – VolkerK

0

检查是否有您在查询中使用的POST值?如果它正在返回undefined_index是因为您正在使用的帖子的变量未设置。目前他们甚至不存在。

例如:

如果调试$ _ POST [ 'FNAME']会返回false或为空。尝试一下。

分辨率:

现在我想你没有,如果表已submited或没有验证运行此代码。 因此,开始你应该这样做:

if(isset($_POST) && count($_POST) > 0){  

$con=mysql_connect("127.0.0.1", "root", ""); 
     mysql_select_db("society"); 
     if(!$con) 
     { 
      echo "Failed to Connect to MySql".mysqli_connect_error(); 
     } 
     else 
     { 
      echo"success"; 
     } 

    $query="INSERT INTO users (fname, lname, email, password) VALUES('".$_POST['fname']."','".$_POST['lname']."','".$_POST['email']."','".$_POST['password']."')"; 
    mysql_query($query,$con); 
} 
+0

@小心你的解决方案。因为当你的解决方案不是强制性的时候,你的解决方案强制设置变量。想象一下,你不想填写该字段的电子邮件?你永远不会在数据库中插入数据...小心。如果您通过这种方式验证表单,则可以验证表单是否已被提交。 –

+0

不推荐使用mysql_ *扩展名。缺少SQL注入预防。如果参数丢失(即静默失败),则不进行repsonse。 – VolkerK

+0

这不是问题。问题是PHP的错误,我说过的起源。他的做法是错误的,但没有造成任何错误。 –